我有一個記錄foo
在數據庫中具有:start_time
和:timezone
屬性。Ruby/Rails - 更改時間的時區,而不更改值
例如,:start_time
是UTC的時間 - 2001-01-01 14:20:00
。例如, :timezone
是一個字符串 - America/New_York
。
我想創建一個新的時間對象,其值爲:start_time
,但其時區由:timezone
指定。我不想加載:start_time
,然後轉換爲:timezone
,因爲Rails會很聰明,並且從UTC更新時間與該時區保持一致。
目前,
t = foo.start_time
=> 2000-01-01 14:20:00 UTC
t.zone
=> "UTC"
t.in_time_zone("America/New_York")
=> Sat, 01 Jan 2000 09:20:00 EST -05:00
相反,我希望看到
=> Sat, 01 Jan 2000 14:20:00 EST -05:00
即。我想做的事:
t
=> 2000-01-01 14:20:00 UTC
t.zone = "America/New_York"
=> "America/New_York"
t
=> 2000-01-01 14:20:00 EST
也許這將幫助:HTTP://api.rubyonrails。 org/classes/Time.html#method-c-use_zone – MrYoshiji
我不認爲你正確使用時區。 如果你從本地保存到你的分貝作爲UTC,通過它的本地時間解析它並通過它的相對utc保存它有什麼錯誤? – Trip
雅...我認爲最好的接受幫助你可能需要解釋*爲什麼*你需要這樣做?爲什麼你會在第一時間把錯誤的時間存儲在數據庫中? – nzifnab