因此,在設置Time.zone時,我在視圖中看到日期不一致的結果。我希望有人能告訴我發生了什麼事。我有Ruby應用程序運行在Ubuntu服務器上的Rails應用程序12.04Time.zone&in_time_zone在視圖中顯示錯誤的時間
在我的應用程序控制器中,我有一個before_filter從current_user公司的time_zone記錄中設置Time.zone。
before_filter :set_user_time_zone
private
def set_user_time_zone
Time.zone = current_user.company.time_zone if user_signed_in?
end
我與測試用戶是在「中部時間(美國&加拿大)」
原始數據庫記錄是2012年8月13日二十點10分54秒
在我認爲我使用下面的代碼格式化日期:
servicedata.service_last_run_time.strftime('%b %e, %Y %l:%M%P')
我希望回到「2012年8月13日下午8:10」這將是在「中部時間上面的記錄(美國&加拿大)「但是我得到」2012年8月13日上午9:10「
我在軌道控制檯測試相同的代碼,它工作正常。我不確定它爲什麼不工作。
在我找到before_filter的想法之前,我只是在所有視圖中鏈接「in_time_zone」,但獲得相同的結果。例如
servicedata.service_last_run_time.in_time_zone(current_user.company.time_zone).strftime('%b %e, %Y %l:%M%P')
同樣都Time.zone或手動鏈接in_time_zone到日期對象中軌控制檯,但在意見工作正常返回一個可怕的錯誤的時間。
我測試的服務器時間,以確保它們是不變UTC從以下方面:
Rails Console : 2012-08-14 02:06:29 +0000
Ubuntu Shell: Tue Aug 14 02:06:38 UTC 2012
我不知道什麼,我在這裏失蹤。
'I18n.localize'方法知道你的控制器中的'Time.zone'設置,它知道如何從UTC調整到Time.zone - 你試過了嗎? – house9 2012-08-14 15:00:40