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 G.
On Apr 14, 2009, at 8:39 PM, Michael G. wrote:
Ruby 1.9:
Michael G.
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 B. http://agileconsultingllc.com
[email protected]
On Tue, Apr 14, 2009 at 9:43 PM, Rob B.
[email protected] wrote:
2009-04-12
ArgumentError: invalid date
=> 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 G.
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?
http://redmine.ruby-lang.org/issues/show/634
treats to some background of it. But doesn’t explain this oddity
[unless it is just Ruby saying “you are running into danger by even
attempting to parse dd/dd/dddd because the first two dd’s could
theoretically later come back to bite you” [?]
Roger P. wrote:
http://redmine.ruby-lang.org/issues/show/634
treats to some background of it. But doesn’t explain this oddity
[unless it is just Ruby saying “you are running into danger by even
attempting to parse dd/dd/dddd because the first two dd’s could
theoretically later come back to bite you” [?]
It would be silly if 4/30/2009 were parsed as m=4,d=30,y=2009
but 4/5/2009 were parsed as d=4,m=5,y=2009
On Wed, Apr 15, 2009 at 8:39 AM, Michael G. [email protected]
wrote:
I am sure I am not the first person to run across this issue. What is
fwiw, i prefer current ruby1.9 behaviour primarily because
Date.parse(“2009/4/30”) == Date.parse(“30/4/2009”) #=>true
thus, i do not have this issue since i always enter dates strings in
yyyy/mm/dd or dd/mm/yyyy format
kind regards -botp