2013-10-24 74 views
1

我的Rails應用程序中系統時間從CEST(+02:00)改爲CET(+01:00)後,我目前正在看到一個問題。Rails uniform歐洲格式的日期時間CEST/CET

我得到的問題是,由於某種原因,某些DateTime被保存爲CET,而其他人則以CEST創建記錄。問題是,當從數據庫中檢索數據並使用strftime(「%H:%M」)時,它會打印出錯誤的值,例如,如果它保存爲CEST,則會打印出「10:00」,而如果保存爲CET,則打印「09:00」。

如何強制系統始終使用+0200或+0100?

通過運行Time.zone運行時得到「(GMT + 01:00)ROME」Time.zone.now我得到時間戳+0200。

我該如何解決這個不一致問題?我的config.time_zone設置爲「羅馬」。

P.S.我正在使用Rails 3.2.13

+0

將所有內容存儲爲UTC,然後轉換爲displaytime所需的任何時區。 –

+0

其實,如果我嘗試更新我的DateTime字段,它會保持相同的時區,如果我通過調用'DateTime.utc'強制它: -/ – user1978591

+0

我的意思是通過在CEST日期執行'date.utc.in_local_time',它回到CEST,同時在CET日期做同樣的事情返回CET表示。運行'utc'不應該讓時區丟失? – user1978591

回答

0

發現問題。

當我使用日期> = 2013年10月26日,ruby正確地返回與TimeTime時間戳(不是當前日期時間戳)關聯的time_zone時,問題就會引發。因此,採用CET之後的所有日期都會自動被視爲CET。

在數據庫級別使用UTC似乎是正確的做法。

相關問題