为什么Date.strptime不会在Rails控制台中引发ArgumentError

时间:2019-01-30 20:49:29

标签: ruby-on-rails ruby

在我的本地Rails控制台中,传递9/31/2011会返回10/1/2011

[1] pry(main)> Date.strptime("09/31/2011", '%m/%d/%Y')
=> Sat, 01 Oct 2011

在heroku控制台中,它引发ArgumentError:

irb(main):002:0> Date.strptime("09/31/2011", '%m/%d/%Y')
ArgumentError: invalid date
    from (irb):2:in `strptime'

1 个答案:

答案 0 :(得分:1)

再次检查您的Gemfile开发依赖项是否不包含可能与Date的strptime函数混淆的东西。

例如,Timecop gem为该方法设置Date.strptime的别名: https://www.rubydoc.info/gems/timecop/Date.strptime_with_mock_date

最后只是致电Time.strptime(str, fmt).to_date

此行为与您报告的行为非常相似:

irb(main):001:0> Date.strptime("09/31/2011", '%m/%d/%Y')
ArgumentError: invalid date
    from (irb):1:in 'strptime'
irb(main):002:0> Time.strptime("09/31/2011", '%m/%d/%Y').to_date
=> Sat, 01 Oct 2011