1

Time.parseは、タイムゾーンを持たないTimeオブジェクトを返します。タイムゾーン情報を保持したいと思います。次のコードよりもこれを行うためのより良い方法はありますか?

def parse_with_timezone( string_input)
  /(.*)([+-]\d\d):?(\d\d)$/.match( string_input) do |match|
    tz = ActiveSupport::TimeZone[match[2].to_i.hours + match[3].to_i.minutes]
    tz.parse( match[1])
  end
end

入力は「2012-12-25T00:00:00 + 09:00」のような文字列です。この関数は、TimeWithZoneオブジェクトを出力します。

4

3 に答える 3

3

現在のローカルタイムゾーンの特定のタイムゾーンを探していましたか?

# Current zone
1.9.3p194> Time.zone.parse('2012-12-25T00:00:00+09:00')
=> Mon, 24 Dec 2012 15:00:00 UTC +00:00

コンソールは上記のUTCに設定されていますが、構成したものは何でも機能します

# Specific timezone 
1.9.3p194> Time.find_zone('Wellington').parse('2012-12-25T00:00:00+09:00')
=> Tue, 25 Dec 2012 04:00:00 NZDT +13:00 

例として+9を渡そうとしていることに気づきました

1.9.3p194> Time.zone = 'Tokyo'
=> "Tokyo" 
1.9.3p194> Time.zone.parse('2012-12-25T00:00:00+09:00')
=> Tue, 25 Dec 2012 00:00:00 JST +09:00

あなたに正しい結果を与えます。

于 2012-11-19T21:23:18.420 に答える
1

Rails Timezone APIについてはどうですか:http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html

于 2012-07-24T02:18:21.277 に答える
0

私はすべての日付/時刻の解析のニーズに慢性を使用することを好みます。

于 2012-07-24T04:17:13.230 に答える