2012-08-06 172 views
12

在我的MySQL數據庫中,updated_at字段被存儲爲UTC。上週美國東部時間晚上7點輸入了一條記錄,它的updated_at值是「2012-08-01 23:00:00」。我試圖將Web客戶端的本地時間轉換爲UTC,並將其與數據庫中的updated_at字段進行比較。作爲一個例子,我想將'08/01/2012 07:00 pm'轉換爲'2012-08-01 23:00:00'(考慮到我在美國東部時間),不過我是缺少轉換的時區方面。 '7:00 pm'是當地時間,可能來自任何時區。我目前的代碼:在Rails中將本地時間轉換爲UTC

ruby-1.9.2-head :015 > from_date = DateTime.strptime('08/01/2012 07:00 pm', '%m/%d/%Y %H:%M %p') 
=> Wed, 01 Aug 2012 19:00:00 +0000 
ruby-1.9.2-head :016 > from_date = Time.zone.parse(from_date.to_s).utc 
=> 2012-08-01 19:00:00 UTC 

有什麼想法?

編輯:此外,我可以在我的strptime調用中使用「%Z」,但這是假設我有值的時區,我目前沒有。我想我可以使用Javascript發送該日期/時間值。

+0

請問這是你嗎? http://stackoverflow.com/questions/4820819/how-to-convert-date-into-utc-in-ruby-rails – lcguida 2012-08-06 18:04:12

回答

20

本地UTC

created_at.utc

UTC當地

created_at.localtime

0

首先,我會檢查您的時區設置。

在你的environment.rb(梁2)或application.rb中(Rails 3中)的文件,你可以設定默認的時區:config.time_zone = 'Eastern Daylight Time (EDT)'

其次我想看看這個職位信息和指導和提示,以滿足您的需求:
http://databasically.com/2010/10/22/what-time-is-it-or-handling-timezones-in-rails/

+0

我沒有明確設置時區,所以它默認爲UTC。如果我現在將其更改爲默認值,那麼會影響已存儲在數據庫中的數據嗎? – 2012-08-06 18:27:22