2017-11-15 17 views
1

Rubyでは現地時間をUTC時間に変換する方法がたくさんありますが、時間とゾーンが別々の場合はどうすればよいかわかりませんデータ。 「12:00 PM -0500」のようなものがあれば、これを.getutc()でUTCに簡単に変換できます。しかし、「12:00 PM」と「東部時間(US &カナダ)」がある場合はどうなりますか?どのようにしてこれらの2つを組み合わせてUTC時間を見つけることができますか?別の時間とタイムゾーンの文字列をとり、UTCに変換する

+0

_Iの結果を返します - その2つの文字列がありますか? – Stefan

+0

@Stefanはい、これらは2つの文字列です – 123

+0

これらの文字列はどこから来たのですか? – Stefan

答えて

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 
3

のDateTime :: parseメソッドは、あなたが探しているものかもしれません。

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

は時刻をUTCに変換する多くの方法がありますが、そこから

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

の結果を返します。例えば、

utc = x.new_offset(0) 

は "12:00 PM" と "東部標準時(米国およびカナダ)" _を持って

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

これには、stdlib 'require 'datetime''が必要です。また、私は 'to_time'でTime aftewardsに変換します – Max

関連する問題