作为Rake任务的一部分,我需要将UTC时间转换为用户时区中的等效时间.我想要做的是更改午夜的UTC时间戳,并将时间戳重新创建为用户所在时区的午夜.
示例
转换UTC时间
Wed, 01 Mar 2017 00:00:00 UTC +00:00
遵守夏令时( spring /夏季)时的东部夏令时(EDT)
Wed, 01 Mar 2017 04:00:00 UTC +00:00
zone = ActiveSupport::TimeZone.new("Eastern Time (US & Canada)")
time = "Wed, 01 Mar 2017 00:00:00 UTC +00:00"
time.in_time_zone(zone)
=> Tue, 28 Feb 2017 19:00:00.000000000 EST -05:00
上面的代码在数据库中仍然会保存为Wed, 01 Mar 2017 00:00:00 UTC +00:00
,因为Rails会将所有的时间戳转换回UTC.然而,我需要得到Wed, 01 Mar 2017 04:00:00 UTC +00:00
,因为这是true开始的一天在用户的时区.