1

我對RoR比較陌生,並且遇到了時區轉換問題。從數據庫中獲取數據(存儲在美國中部時間)時,它認爲那裏的時間以UTC爲單位,並嘗試轉換它們,因此使它們在5小時內錯誤。我在我的application.rb文件中有:Rails 3.1時區UTC和中心時區混淆

config.time_zone = 'Central Time (US & Canada)' 
config.active_record.default_timezone = 'Central Time (US & Canada)' 

如果我刪除了其中一個配置指令,則時間不能正確保存。只要我有他們,時間正確地存儲在數據庫中,但RoR無法正確讀取它們。爲了解決這個問題,我必須將從數據庫獲得的所有時間都轉換爲UTC。我必須相信有更好的方法。

我也嘗試設置ENV ['TZ'],但那似乎沒有做任何事情。

ENV['TZ'] = "US/Central" 

任何幫助都會被處理。

謝謝!

+0

你有沒有機會做* sane *的事情,並改變數據庫本身的數據,所以它都是UTC?將數據全部存儲在一個特定的(非UTC)時區是需要麻煩的 - 而且由於DST轉換,它也會丟失信息。 –

+0

不幸的是,設計決策不在我的手中。對於這個項目,我被告知時間必須存儲在美國中部時間。 – user1485753

+0

你的意思是在中部時間,對吧?不是CST,它總是*標準*時間。 –

回答

0

對我來說其實,AR拒絕設定值從別的東西:UTC /:本地

config.active_record.default_timezone = 'Central Time (US & Canada)' 

此行結束了日誌充滿了落回的警告:當地

什麼工作是完全切換系統時區

ENV['TZ'] = "US/Central" 

請確保使用正確的tz名稱。 Unix的時區的名字都沒有那些的ActiveSupport :: TimeZone的使用

參考的ActiveSupport ::時區::這個

而且MAPPING,注意,這Time.now == Time.current後;它也會在指定的時區給予時間;

所以這是一種比解決方案更多的破解。