我有一个记录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