Rails - 时区转换

时间:2016-02-18 13:07:47

标签: ruby-on-rails timezone

我正在尝试将带有外部时区字段的日期时间转换为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。

3 个答案:

答案 0 :(得分:3)

试试这个解决方案:

 time = ActiveSupport::TimeZone.new(zone_str).parse(time_str)
 time.in_time_zone('UTC')
 #=> Tue, 01 Mar 2016 08:00:00 UTC +00:00

答案 1 :(得分:1)

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')

使用上面的代码。

答案 2 :(得分:0)

试试这个:

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")