Rails – 时区转换

我正在尝试将带有外部时区字段的日期时间转换为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调用,只使用我的本地时区,即Central。

我应该做什么呢?

– 编辑 –

请注意,我不是要在整个应用程序中设置时区。 我只想尝试一组输入(时间和时区在不同的表单字段中)并将它们转换为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")