我正在尝试将带有外部时区字段的日期时间转换为UTC。 有人可以向我解释为什么这不起作用吗?
time_str = '2016-03-01 00:00'
zone_str = 'Pacific Time (US & Canada)'
Time.use_zone(zone_str) { Time.parse(time_str).in_time_zone('UTC') }
我期待什么:
'2016-03-01 08:00'
我得到的:
'2016-03-01 06:00'
基本上,它忽略了我的use_zone
呼叫,只使用我的本地时区,即中部。
我应该怎么做?
--编辑--
请注意,我并没有尝试在整个应用程序中设置时区。 我只是尝试获取一组输入(不同表单字段中的时间和时区)并将其转换为 UTC。
试试这个解决方案:
time = ActiveSupport::TimeZone.new(zone_str).parse(time_str)
time.in_time_zone('UTC')
#=> Tue, 01 Mar 2016 08:00:00 UTC +00:00
time_str = '2016-03-01 00:00'
zone_str = 'Pacific Time (US & Canada)'
time = ActiveSupport::TimeZone.new(zone_str).parse(time_str)
time.in_time_zone('UTC')
使用上面的代码。
试试这个:
time_str = '2016-03-01 00:00'
zone_str = 'Pacific Time (US & Canada)'
Time.zone = zone_str
Time.zone.parse(time_str).in_time_zone("UTC")