私の開発では:
str = "Sat Jan 12 2013 14:00:00 GMT-0500"
Time.zone.parse(str).utc
出力:
2013-01-12 19:00:00 UTC
私のプロダクション(appfog)では:
2013-01-12 14:00:00 UTC
タイムゾーンを無視しないようにするにはどうすればよいですか?
私の開発では:
str = "Sat Jan 12 2013 14:00:00 GMT-0500"
Time.zone.parse(str).utc
出力:
2013-01-12 19:00:00 UTC
私のプロダクション(appfog)では:
2013-01-12 14:00:00 UTC
タイムゾーンを無視しないようにするにはどうすればよいですか?
Time.zone.parse
は、経過した時間を現在のシステムタイムゾーンにあると解釈し、文字列内のタイムゾーン情報を破棄します。
require 'active_support/all'
`date '+%Z %z'`.strip
#=> "EST -0500"
Time.zone = 'MST'
Time.zone.parse('Fri, 31 Dec 1999 14:00:00 HST -10:00')
#=> Fri, 31 Dec 1999 12:00:00 MST -07:00
解析された時間は予想どおりMSTであることに注意してください。ただし、2時間前に調整されています。これは、EST(システムタイムゾーン)とMST(ActiveSupport)の間のオフセットTime.zone
です。ただし、タイムゾーンの「名前」を削除すると期待どおりに機能するため、これはバグである可能性があります。
Time.zone.parse('Fri, 31 Dec 1999 14:00:00 -10:00')
#=> Fri, 31 Dec 1999 17:00:00 MST -07:00
とにかく最終的にUTCに変換しているだけなので、おそらく次を使用するだけですDateTime.parse
。
DateTime.parse('Fri, 31 Dec 1999 14:00:00 HST -10:00').utc
#=> Sat, 01 Jan 2000 00:00:00 +0000
「GMT」ビットを取り除きます-おそらくパーサーを混乱させます:
str = "Sat Jan 12 2013 14:00:00 -0500"
Time.zone.parse(str).utc