【发布时间】:2012-02-28 05:06:57
【问题描述】:
我需要在 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
【问题讨论】:
-
您使用哪个时区进行测试?您应该在内部对所有值使用 UTC,并呈现到用户的本地时区以进行显示。
-
它们都是 UTC。但我想我找到了真正的问题。我已经适当地编辑了我的问题。
标签: ruby-on-rails ruby testing yaml erb