2011-12-09 33 views
1

在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

回答

1

事实证明,问题出在我在查询中使用NOW()到mysql。

加入以下/etc/my.cnf固定的问题:

[mysqld_safe] 
timezone = UTC 
0

默认Rails的时区是UTC和ActiveRecord的自动转换时间这一个。你可以在config/application.rb中设置它。对于比较时间,您可以使用Time.zone.now,它指的是在application.rb中设置的时区。您可以查看​​有哪些时区可用。

2

使用><的日期/时间比较应该可以正常工作,而不考虑时区。

[[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他们。