Ruby Date.strptime不强制执行4位数年份

时间:2014-07-16 19:42:25

标签: ruby date strptime

我希望这段代码能给我一个ArgumentError: invalid date错误。在Ruby 2.0.0中:irb:

irb(main):003:0> Date.strptime('05-10-2014', '%Y-%m-%d')
=> #<Date: 0005-10-20 ((1723177j,0s,0n),+0s,2299161j)>

即使我指定%Y,我做错了还是Ruby会接受2位数的年份?

我正在考虑测试用户输入。在这种情况下,我的程序期望它在%Y-%m-%d中,并且输入日期是&#34;输入&#34;格式错误,但strptime表示没问题。

1 个答案:

答案 0 :(得分:7)

去年有一个针对这个问题的Ruby漏洞,但它被拒绝了。我想Ruby团队认为这是有效的行为。

https://bugs.ruby-lang.org/issues/8941