我需要在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
答案 0 :(得分:2)
当你将1.month转换为一个整数时,它会任意设置传递到from_now到2592000秒的持续时间,即30天,无论它是什么月份。
之前我遇到过这个问题。查看Data and Time Helper Methods的文档。
虽然这些方法在使用时提供了精确的计算 上面的例子(“.. 1.month.from_now ..”),应注意注意 如果
months’,
年'的结果等,则不是这样 使用前转换