2013-04-25 32 views
7

我只是用一種形式,它的updated_at和created_at值創建一個新對象,對象是Rails的似乎是建立在created_at錯誤的時區,的updated_at值

created_at: "2013-04-25 03:22:19", updated_at: "2013-04-25 03:22:19", 

但是這是未來的地方〜7小時我是(PST)。

Time.now.to_s 
=> "2013-04-24 20:23:12 -0700" 

如何確保時區與用戶創建它的位置一致?

+0

您是否設置了'config.time_zone'設置? – lulalala 2013-04-25 03:30:31

+0

查看'use_zone' [docs](http://api.rubyonrails.org/classes/Time.html#method-c-use_zone)---如果您尚未在config/application.rb中設置時區文件,運行'rake time:zones:all'獲取您可以設置的有效時區列表。 – Tomanow 2013-04-25 03:36:34

+0

提示:在config/application.rb中檢查config.time_zone註釋 – 2013-04-25 03:36:36

回答

12

您的created_atupdated_at值是從服務器寫入數據庫的,因此它們將始終位於服務器或應用程序的時區。在服務器處理表單數據並保存到數據庫時,它不知道瀏覽器的時區。

您可以設置使用config.time_zone Rails的時區,爲@lulalala建議。

聽起來好像您有興趣在自己的本地時區向用戶顯示時間。您有此兩種選擇:

一旦你保存爲用戶屬性的時區,你可以像這樣顯示你的時間給你的用戶:

Model.created_at.in_time_zone(@current_user.time_zone) 
2

我檢查irb時區與命令> Time.now.to_s和時間是正確的,但應用程序保存錯誤3小時。所以..

對我來說,解決辦法是添加config.time_zone = "Santiago"config/environments/development.rb文件。時區列表是here,我的輸入是

"Santiago" => "America/Santiago" 
相關問題