gpt4 book ai didi

ruby-on-rails - Rails TimeWithZone 和闰年

转载 作者:行者123 更新时间:2023-12-04 05:32:18 24 4
gpt4 key购买 nike

今天是 2 月 29 日:我们的测试失败的那一天。

我们的测试失败了,因为这些测试所做的事情最终可以与这样的命令进行比较:Time.zone.now - 1.year + 1.year .它恰好不等于 Time.zone.now .

为什么会发生这种情况?为什么 ActiveSupport 不能在这样的计算中处理闰年?它不适用于时间戳,这会防止发生此类问题吗?

最佳答案

您可以使用 4 年而不是 1 年来达到相同的效果。 (注意: - 1.day 因为现在是 3 月 1 日)

(Time.zone.now - 1.day) - 4.year + 4.year
=> Mon, 29 Feb 2016 15:12:58 UTC +00:00

可能值得注意的是(如下),无论日期如何。
Time.zone.now
=> Tue, 01 Mar 2016 15:11:51 UTC +00:00
Time.zone.now == Time.zone.now - 1.year + 1.year
=> false

除非你使用 begin_of_day:
(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 ?

还...
1.year == 365.days
=> false
1.year == 365.25.days
=> true

关于ruby-on-rails - Rails TimeWithZone 和闰年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35703147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com