gpt4 book ai didi

ruby-on-rails - 为什么在 Fixnum 上调用时 `from_now` 是错误的?

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:33 26 4
gpt4 key购买 nike

我需要在 yaml 文件中存储一些时间段,如下所示:

test:
testing: <%= 1.month %>

我在这样的初始化程序中获取数据:

Class::TIMES = YAML.load(ERB.new(File.new(Rails.root.join('config', 'times.yml')).read).result)

到目前为止一切顺利。但是我从中得到的时间总是差一天;测试表明了这一点。例如:

<Tue, 06 Mar 2012> expected but was <Wed, 07 Mar 2012>.

测试线:

assert_equal 1.month.from_now.to_date, @object.finished_at.to_date

在其他地方,@object 的 finished_at 设置如下:

# duration is from the YAML file
self.finished_at = duration.from_now

无论我在 YAML 文件中放入什么时间段,它似乎总是关闭一天。为什么会这样?

编辑:这似乎是 Fixnums 和 from_now 的问题:

> 1.month.from_now
=> Tue, 06 Mar 2012 21:05:00 UTC +00:00

> 1.month.to_i.from_now
=> Wed, 07 Mar 2012 21:05:05 UTC +00:00

最佳答案

当您将 1.month 转换为整数时,它会任意设置传递给 from_now 的持续时间为 2592000 秒,即 30 天,无论它是哪个月。

我以前遇到过这个问题。查看 Data and Time Helper Methods 的文档.

While these methods provide precise calculation when used as in the examples above(".. 1.month.from_now .."), care should be taken to note that this is not true if the result of months’,years’, etc is converted before use

关于ruby-on-rails - 为什么在 Fixnum 上调用时 `from_now` 是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9164943/

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