ルビーのDate.parseで、誰かが光を当てることができるかどうか疑問に思っています。Rubyで異常Date.parse
今日の日付が、私はそれがスラッシュ対ハイフンを解釈だかわからない2011年10月17日
irb(main):027:0> Date.parse("11-20").to_s
=> "2011-10-11"
irb(main):028:0> Date.parse("11/20").to_s
=> "2011-11-20"
irb(main):029:0> Date.parse("1-20").to_s
=> "2011-10-20"
irb(main):032:0> Date.parse("1/20").to_s
=> "2011-01-20"
irb(main):030:0> Date.parse("9-20").to_s
=> "2011-10-20"
irb(main):035:0> Date.parse("9/20").to_s
=> "2011-09-20"
irb(main):031:0> Date.parse("9-10").to_s
=> "2011-10-10"
irb(main):033:0> Date.parse("9/10").to_s
=> "2011-09-10"
irb(main):042:0> Date.parse("1-20-1997").to_s
ArgumentError: invalid date
from /usr/lib/ruby/1.8/date.rb:956:in `new_by_frags'
from /usr/lib/ruby/1.8/date.rb:1000:in `parse'
from (irb):42
from /usr/lib/ruby/1.8/date.rb:1578
irb(main):043:0> Date.parse("1/20/1997").to_s
=> "1997-01-20"
です。スラッシュの振る舞いは私には完全に意味があります。しかし、ハイフンの動作は奇妙です。ハイフンの場合、何を解析していますか?
ありがとうございました。 "parse"の説明は、あなたが意味する日付を把握するための "ヒューリスティック"アルゴリズムを適用すると言います。 mm-dd形式はおそらく一般的ではないと私は同意しますが、ヒューリスティックなアルゴリズムが "9-20"の意味を決定する上で非常に正確ではありませんでした。それは私にとってあいまいではないようです。私は2011年9月20日か2020年9月1日かを予想していただろう。しかし、2011-10-20は私を驚かせました。 – lurker