Date parsing.

I'm inmporting a csv file and I have strings like this: "15-OTT-98", 5-GEN-96". They are dates: OTT stands for Oct in italian and GEN stands for Jan. How can I render those strings in valid date format?

Note: my Italian is very rusty to non-existent, so change below where needed

CUSTOM_MONTHS = [nil, “GEN”, “FEB”, “MAR”, “APR”, “MAG”, “GIU”, “LUG”, “AGO”, “SET”, “OTT”, “NOV”, “DIC”]

def parsedatestring(datestring)

day, monthname, year = datestring.split(“-”)

year = (year.to_i > Date.today.year - 2000 ? “19#{year}” : “20#{year}”)

Date.new(year.to_i, CUSTOM_MONTHS.index(monthname), day.to_i)

end

You might need to tweak the year conversion in case you have short dates that are in the future. Right now I’m assuming all dates are in the past.

Best regards

Peter De Berdt

Ok. Can I create past that method inside a custom rake task and use it inside the namespace? Ex:

/lib/tasks/import.rake

def parsedatestring(datestring) day, monthname, year = datestring.split("-") year = (year.to_i > Date.today.year - 2000 ? "19#{year}" : "20#{year}") Date.new(year.to_i, CUSTOM_MONTHS.index(monthname), day.to_i) end

namespace :import do   desc 'imports'   task:raw do    parsedatestring(.....)

Sure, you can define methods inside rake tasks and use them there afaik (not 100% sure, but 99%). Try for yourself and see.