0
puts "date --- #{date}"
@date = Time.parse(date.to_s).iso8601 unless date.nil?
puts "@date -- #{@date}"

出力

Date --- 2012-08-12T12:15:17-07:00
@Date -- 2012-08-12T19:15:17+00:00

誰もが理由を知っていますか?

さらに、これはstrptimeで発生します

Time.strptime("2012-08-12T12:05:08-07:00", "%Y-%m-%dT%H:%M:%S%:z")
=> 2012-08-12 19:05:08 +0000
4

1 に答える 1

1

システムが UTC に設定されているようです。 Time.parse()システムのタイムゾーンを使用する新しい Time オブジェクトを作成し、解析される時刻に設定します。解析された日付のタイムゾーンと一致するように、新しい Time のタイムゾーンは変更されません。本当にその動作が必要な場合は、次のようなものを使用できます。

DateTime.parse(date.to_s).new_offset(date.iso8601[-6,6]).iso8601

更新:追加されたばかりの質問の部分に関してはstrptime()、まったく同じ概念です。解析している日付と一致する時間で、デフォルトのタイムゾーンで新しい Time が作成されています。

于 2012-08-12T19:57:34.297 に答える