【发布时间】:2016-02-29 15:21:53
【问题描述】:
今天是 2 月 29 日:我们的测试结束的那一天。
我们的测试失败了,因为这些测试最终所做的事情可以与这样的命令进行比较:Time.zone.now - 1.year + 1.year。它恰好不等于Time.zone.now。
为什么会这样?为什么 ActiveSupport 不能在这样的计算中处理闰年?它不能与时间戳一起使用,从而防止此类问题的发生吗?
【问题讨论】:
-
如果你今天测试它,你运气不好......今天是 2 月 29 日,每 4 年存在一次。所以
Time.zone.now+1.year将带您到 2 月 28 日,因为 2017 年不存在 29 日。1.year.from_now也将返回 2017 年 2 月 28 日 -
是的,我明白了。但是,例如,为什么
Time.zone.now + 1.year不等于 3 月 1 日?在我看来,这会更合适。 -
Time.zone.now - 365.days + 365.days 似乎工作...
标签: ruby-on-rails activesupport