采用单独的时区和时区字符串,并转换为UTC

时间:2017-11-15 15:09:30

标签: ruby datetime timezone timezone-offset

我知道有很多方法可以使用Ruby将本地时间转换为UTC时间,但是当时间和区域是单独的数据时,我不知道如何做到这一点。如果我有类似“12:00 PM -0500”的内容,我可以使用.getutc()轻松将其转换为UTC。但是,如果我有“12:00 PM”和“Eastern Time(US& Canada)”怎么办?如何将这两者结合起来找到UTC时间?

2 个答案:

答案 0 :(得分:3)

DateTime :: parse方法可能就是你要找的东西。

x = DateTime.parse("12:00 PM Eastern Time (US & Canada)")

将返回

的结果
#<DateTime: 2017-11-15T12:00:00-05:00 ((2458073j,61200s,0n),-18000s,2299161j)> 

从那里,有很多方法可以将时间转换为UTC。例如,

utc = x.new_offset(0)

将返回

的结果
#<DateTime: 2017-11-15T17:00:00+00:00 ((2458073j,61200s,0n),+0s,2299161j)>

答案 1 :(得分:0)

如果您使用的是Rails,或者您不介意需要ActiveSupport,则可以使用ActiveSupport :: TimeZone来执行此操作。

>> time_zone = "Eastern Time (US & Canada)"
>> time_without_zone = "12:00 PM"
>> ActiveSupport::TimeZone[time_zone].parse(time_without_zone)
#=> Wed, 15 Nov 2017 12:00:00 EST -05:00