2011-12-09 48 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他們。