今天是2月29日:我们的测试破坏的那一天。
我们的测试失败了,因为这些测试做的事情最终可以与这样的命令进行比较:Time.zone.now - 1.year + 1.year
。它恰好是 NOT 等于Time.zone.now
。
为什么会这样?为什么ActiveSupport不能在这样的计算中处理闰年?它是否适用于时间戳,这会阻止这类问题的发生?
答案 0 :(得分:0)
您可以使用4年而不是1年来获得相同的效果。 (注意: - 1.day因为现在是3月1日)
for(i=0; i<26; i++){
...
while(wait(NULL)>0);
}
exit(EXIT_SUCCESS);
值得注意的是(下方),无论日期如何。
(Time.zone.now - 1.day) - 4.year + 4.year
=> Mon, 29 Feb 2016 15:12:58 UTC +00:00
除非你使用beginning_of_day:
Time.zone.now
=> Tue, 01 Mar 2016 15:11:51 UTC +00:00
Time.zone.now == Time.zone.now - 1.year + 1.year
=> false
此外,这取决于你实际上要做什么...为什么要测试(Time.zone.now - 1.day).beginning_of_day == ((Time.zone.now - 1.day) - 4.year + 4.year).beginning_of_day
=> true
?
也...
Time.now - 1.year + 1.year