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.