2013-05-03 82 views
1

我在我的消息表中有一個名爲「Archived」的列和一個按鈕,當它按下時,會將當前時間和日期寫入db列。現在我可以把它寫出來,但它在錯誤的時區。網上通緝後,我創建了目前保存在下面的代碼,而不是在正確的時區:DateTime.now未在Rails中設置時區

控制器代碼

def archive_message 
    @message = Message.find(params[:id]) 
    @message.archived = DateTime.now.in_time_zone "Central Time (US & Canada)" 
    @message.save 

    redirect_to '/messages' 
end 

我的路線(我相信因爲是這是確定)

post 'messages/:id/archive_message' => 'Messages#archive_message', :as => 'archive_message' 

任何建議,非常感謝。

+0

您是否嘗試過使用zoneinfo ID,例如美國/芝加哥?僅用於診斷目的。 – 2013-05-03 19:29:31

+0

我試過'code' @ message.archived = DateTime.now.in_time_zone「America/Chicago」 ,與 'code' @ message.archived = DateTime.now.in_time_zone「做了同樣的事情」Central Time(US&Canada )「 – lando2319 2013-05-03 19:36:44

+0

有人發佈到 config.time_zone ='中央時間(美國和加拿大)' config.active_record.default_timezone =:本地 到我的application.rb文件。我將它添加到我的模塊代碼中,它似乎完全改變了日期和時間,現在它將時間顯示爲明天。 – lando2319 2013-05-03 20:05:48

回答

1

編輯再次:OK這是UTC時間,所以它的工作。謝謝大家。

編輯:我剛剛關閉了一切重新啓動,現在它不工作,它節省時間再次提前5小時,我不知道爲什麼。

在配置/ application.rb中加入 以下到模塊代碼

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

和我的控制器

@message.archived = DateTime.current 

感謝大家