在mysql db中记录:
2011-12-09 07:59:00 UTC
红宝石如果我Time.now
:
2011-12-09 03:57:46 -0800
我如何进行以下比较?(不起作用)
<% if item.exp_date < Time.now %>
Expired
<% end %>
PS。如果有一个解决方案,我不必假设,如果数据库的时间存储结束于UTC
或{ {1}}
答案 0 :(得分:2)
使用>
和<
的日期/时间比较无论时区如何都可以正常工作。
[chris@chipbook:~/coding%] pry
[1] pry(main)> a = Time.now
=> 2011-12-09 23:09:14 +1100
[2] pry(main)> b = Time.now.utc
=> 2011-12-09 12:09:44 UTC
[3] pry(main)> a < b
=> true
[4] pry(main)>
如果您想强制使用参考时区来保持一致性,请在其上调用#utc
。
答案 1 :(得分:1)
事实证明问题在于我在查询mysql时使用了NOW()
。
将以下内容添加到/etc/my.cnf
修复了问题:
[mysqld_safe]
timezone = UTC
答案 2 :(得分:0)
默认的Rails时区是UTC,ActiveRecord会自动将时间转换为此时间。您可以在config / application.rb中进行设置。对于比较时间,您可以使用Time.zone.now
,它指的是在application.rb中设置的时区。您可以使用$ rake time:zones:all
检查可用的时区。