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?

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

On 19 May 2011 09:04, Peter De Berdt [email protected] wrote:

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.

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(…)

On 19 May 2011, at 11:17, Mauro wrote:

“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.