2013-06-26 28 views
1

我想將時間對象與PST時區進行轉換。如何在使用Time.to_s(:db)時保留時區?

zone = ActiveSupport::TimeZone.new("Pacific Time (US & Canada)") 
now = Time.now.in_time_zone(zone) 

當我輸出現在,它是正確的。當我做Time.now.in_time_zone(zone).to_s(:db)時,它輸出GMT(原始日期)。

我該如何解決?

更新:看起來like..the下面的代碼工作

zone = ActiveSupport::TimeZone.new("Pacific Time (US & Canada)") 
now = Time.now.in_time_zone(zone).strftime("%Y-%m-%d %H:%M:%S") 

回答

1

數據庫日期通常存儲在UTC時間格式..

的ActiveSupport正在恢復UTC,在to_s不是GMT(:DB) 見http://apidock.com/rails/ActiveSupport/TimeWithZone/to_s

編輯:也許這會幫助你嗎? http://chris.finne.us/2011/09/23/rails-3-tosdb-when-database-time-is-not-utc/

+0

嗨Lichtmberg //感謝您的輸入和鏈接。我實際上找到了一個aswer。更新。 – Moon

+0

好的不錯:)歡迎您 – Lichtamberg

+0

與上面的代碼不同,這會將時間轉換爲UTC。例如:如果當地時間是「星期五,2016年4月8日19:51:39 EDT -04:00」(美國/加拿大東部時間),time.to_s(:db)是「2016-04-08 23: 49:02「,而time.strftime(」%Y-%m-%d%H:%M:%S「)爲」2016-04-08 19:51:39「。 – quainjn

相關問題