我试了一句:
last_item = Item.last
last_item.created_at.strftime('%Y-%m-%d')
并且控制台日志中的SQL是:
SELECT "items".* FROM "items" ORDER BY items.id DESC LIMIT 1
但有时候我会2011-04-03
,有时会2011-04-04
是什么让Rails 3(3.0.5)出现这种非确定性行为?是时区吗?但是我在浏览器中按下Reload,这次给了04-03,下次它给04-04而不重启服务器或更改任何配置文件或源代码。Sun,2011年4月3日17:58:48 UTC +00:00
更新:进一步调试显示,当它是04-04时,使用p last_item.created_at
打印的时间为:
周一,2011年4月4日01:58:48 HKT +08:00
但我在视图中有这一行:
- Time.zone = 'Hong Kong'
但last_item.created_at.strftime('%Y-%m-%d')
已在控制器中完成。因此,控制器不应该先运行,而在视图中,我只是尝试使用不同的时区打印它...同时,为什么它有时会变成UTC,有时会变成HKT?
答案 0 :(得分:1)
我认为在视图中设置时区可能会导致这种非确定性行为。您应该尝试在config目录中的某个位置设置时区,可能在config/application.rb
。