Ruby on Rails Thursday, May 19, 2011


On 19 May 2011, at 10:24, Mauro wrote:

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


No comments:

Post a Comment