我们的 rspec 在午夜 12 点到 5 点之间有奇怪的行为,我们的测试正在下降。 (我住在印度,GMT + 5.30)
进一步检查,这是我看到的
rails c
Loading development environment (Rails 4.1.8)
[1] pry(main)> Date.yesterday
=> Thu, 09 Apr 2015
[2] pry(main)> Date.today
=> Sat, 11 Apr 2015
[3] pry(main)> Date.tomorrow
=> Sat, 11 Apr 2015
[4] pry(main)>
使用 Ruby 2.1 和 Rails 4.1.8
对我来说,Date.yesterday 和 Date.tomorrow 似乎是基于 Date.current 计算的(没有时区,它被假定为 UTC)。 Date.today 的计算方式不同,当前时区图片在。
这是否意味着我不应该使用没有明确时区的任何时间、日期。这不是完全错误吗?
任何帮助将不胜感激
至少,我发现这是我们团队中某个人的有趣发现
最佳答案
如所述here , Date.today
使用系统本地时间。
在单元测试中,您应该模拟出时间,但您应该在集成测试中标准化 UTC。您可以使用 Time.now.utc.to_date
来做到这一点。 ActiveSupport也可以帮助您。
关于ruby-on-rails - 今天和明天的日期类返回相同 - 奇怪而有趣的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29571765/