在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
他們。