Ruby 1.87 vs 1.92 Date.parse

mgm*_*870 47 ruby ruby-on-rails

在Ruby 1.87我可以这样做:

Date.parse ("3/21/2011")
Run Code Online (Sandbox Code Playgroud)

现在在1.9.2我得到:

ArgumentError:无效的日期

有任何想法吗?

Jon*_*ier 60

使用strptime并提供特定的时间格式.

ruby-1.9.2-p136 :022 > Date.strptime '03/21/2011', '%m/%d/%Y'
 => #<Date: 2011-03-21 (4911283/2,0,2299161)>
Run Code Online (Sandbox Code Playgroud)

有关Ruby版本之间差异的原因,请参阅michaelmichael的回复.


mic*_*ael 26

根据此错误报告,mm/dd/yy在1.9中有意删除了解析日期的功能.Ruby的创建者Yukihiro Matsumoto说:

"dd/dd/dd"格式本身非常依赖于文化和模糊.在日本(和其他国家)是yy/mm/dd,在美国是mm/dd/yy,在欧洲国家是dd/mm/yy,对吧?在某些情况下,你可以偶然告诉他们,但在一般情况下我们不应该依赖运气.我相信这就是在1.9中禁用解析此格式的原因.

正如hansengel建议的那样,你可以Date.strptime改用它.