1

@date、@time、@datetime の 3 つのオブジェクトがあります。オブジェクト@timeと@datetimeのゾーンを使用して、オブジェクト@dateを時間(およびdatetime)に変換する方法は?

例:

@date = '2012-1-1'
@time = '2012-08-14 14:48:47 +1000'
@datetime = '2012-08-14 14:48:47 +0500'
@converted_date_to_time = ...     # should give '2012-1-1 00:00:00 +1000'
@converted_date_to_datetime = ... # should give '2012-1-1 00:00:00 +0500'
4

2 に答える 2

3

このような日付を解析できます

1.9.3p194> date = '2012-1-1'
=> "2012-1-1" 
1.9.3p194> Time.parse(date)
=> 2012-01-01 00:00:00 +1300 

それは私のローカル タイムゾーン (ウェリントン、+13) を使用しています。同じ方法で時間文字列を解析することもできます

1.9.3p194> time = '2012-08-14 14:48:47 +1000'
=> "2012-08-14 14:48:47 +1000" 
1.9.3p194> Time.parse(time)
=> 2012-08-14 16:48:47 +1200 

少し間違っているように見えるかもしれませんが、それは私のローカル タイムゾーンを再び使用しているためです。正確ですが、現在は私のタイムゾーンです。その後、必要なタイムゾーンに変換できます。

1.9.3p194> Time.parse(time).in_time_zone('Moscow')
=> Tue, 14 Aug 2012 08:48:47 MSK +04:00

1.9.3p194> Time.parse(time).in_time_zone('Brisbane')
=> Tue, 14 Aug 2012 14:48:47 EST +10:00 

これは、datetime文字列に対しても同じように機能します。

特定のタイムゾーンを使用する場合は、次のようにします。

1.9.3p194> Time.find_zone('Tokyo').parse('2012-08-14 14:48:47 +0500')
=> Tue, 14 Aug 2012 18:48:47 JST +09:00 
于 2012-11-19T21:34:20.640 に答える