9

Ruby 2.0 で Time クラスを使用して日時を解析しようとしています。日付を解析して指定されたタイムゾーンで取得する方法がわかりません。最初にTime.zone.parse呼び出した日付を解析しTime.zoneて、指定したタイムゾーンに設定していました。以下の例では、ゾーンを設定しましたが、効果がありません。実行strptimeしようとしTime.zone.parse(date)ましたが、以下のような日付を解析できません。

Time.zone = "Central Time (US & Canada)"
#=> "Central Time (US & Canada)"
irb(main):086:0> Time.strptime("08/26/2013 03:30 PM","%m/%d/%Y %I:%M %p")
#=> 2013-08-26 15:30:00 -0400
4

3 に答える 3

8

Time.zoneは Ruby の一部ではなく、ActiveSupport (Rails に含まれています) の一部です。そのため、strptimeまったく知りませんTime.zone。ただし、デフォルトで の値を使用する を使用して、通常の Ruby Time をActiveSupport::TimeWithZoneに変換できます。in_time_zoneTime.zone

require 'active_support/core_ext/time'
Time.zone = 'Central Time (US & Canada)'

time = Time.strptime('08/26/2013 03:30 PM', '%m/%d/%Y %I:%M %p')
#=> 2013-08-26 15:30:00 -0400
time.in_time_zone
#=> Mon, 26 Aug 2013 14:30:00 CDT -05:00
于 2013-08-09T01:18:24.373 に答える