在MySQL分贝的记录:MySQL时间戳与Ruby的Time.now不同?
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。这将是巨大的,如果有一个解决方案,我不必承担如果DB中存储结束时间在UTC
或-0800
在MySQL分贝的记录:MySQL时间戳与Ruby的Time.now不同?
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。这将是巨大的,如果有一个解决方案,我不必承担如果DB中存储结束时间在UTC
或-0800
事实证明,问题出在我在查询中使用NOW()
到mysql。
加入以下/etc/my.cnf
固定的问题:
[mysqld_safe]
timezone = UTC
默认Rails的时区是UTC和ActiveRecord的自动转换时间这一个。你可以在config/application.rb中设置它。对于比较时间,您可以使用Time.zone.now
,它指的是在application.rb中设置的时区。您可以查看有哪些时区可用。
使用>
和<
的日期/时间比较应该可以正常工作,而不考虑时区。
[[email protected]:~/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
他们。