From: Rob Biedenharn Date: 2009-04-15T10:43:34+09:00 Subject: Re: Date.parse 1.8 vs 1.9 On Apr 14, 2009, at 8:39 PM, Michael Guterl wrote: > In attempting to make a small library of mine 1.9 compatible I have > run across an inconsistency in date parsing. > > Ruby 1.8: >>> puts Date.parse("4/12/2009") > 2009-04-12 > >>> puts Date.parse("4/30/2009") > 2009-04-30 > > Ruby 1.9: >>> puts Date.parse("4/12/2009") > 2009-12-04 > >>> puts Date.parse("4/30/2009") > ArgumentError: invalid date > > I am sure I am not the first person to run across this issue. What is > the recommended way for dealing with this? > > Best, > Michael Guterl > Probably with Date.strptime rather than Date.parse so you can specify a format. I'm not actually that surprised by the 04-12 v. 12-04 since the docs say that there are heuristics, but 4/30/2009 ought to be unambiguous as 2009 can't be a month or a day and 30 can't be a month. $ macirb irb> require 'date' => true irb> puts Date.parse("4/30/2009") ArgumentError: invalid date from /Library/Frameworks/MacRuby.framework/Versions/0.3/usr/lib/ruby/ 1.9.0/date.rb:1023:in `new_by_frags' from /Library/Frameworks/MacRuby.framework/Versions/0.3/usr/lib/ruby/ 1.9.0/date.rb:1067:in `parse' from (irb):2 from /usr/local/bin/macirb:12:in `
' irb> puts Date.strptime("4/30/2009", "%m/%d/%Y") 2009-04-30 => nil irb> RUBY_VERSION => "1.9.0" -Rob Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com