From: Michael Guterl Date: 2009-04-15T10:54:57+09:00 Subject: Re: Date.parse 1.8 vs 1.9 On Tue, Apr 14, 2009 at 9:43 PM, Rob Biedenharn wrote: > > 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" > Thanks Rob! If you would have came to Cincinnati.rb tonight you could have told me in person. :) Michael Guterl