私は文字列の解析に取り組んでおり、私に問題を引き起こしているテストケースがあります。 strptimeで日付/時刻文字列を解析すると、夏時間は考慮されません。これは私が知る限り、バグです。私はこのバグの文書を見つけることができません。以下は、Railsコンソールのテストケースです。これはruby 1.9.3-p215とRails 3.2.2です。あなたが見ることができるようにRails夏時間がDateTime.strptimeを使用していると考慮されていません
1.9.3-p125 :049 > dt = DateTime.strptime("2012-04-15 10:00 Central Time (US & Canada)", "%Y-%m-%d %H:%M %Z")
=> Sun, 15 Apr 2012 10:00:00 -0600
1.9.3-p125 :050 > dt = DateTime.strptime("2012-04-15 10:00 Central Time (US & Canada)", "%Y-%m-%d %H:%M %Z").utc
=> Sun, 15 Apr 2012 16:00:00 +0000
1.9.3-p125 :051 > dt = DateTime.strptime("2012-04-15 10:00 Central Time (US & Canada)", "%Y-%m-%d %H:%M %Z").utc.in_time_zone("Central Time (US & Canada)")
=> Sun, 15 Apr 2012 11:00:00 CDT -05:00
、私はUTCに変換する必要があり、その後、戻ってタイムゾーンにDSTを正しく解釈されるように取得するが、その後時間が同様に1時間をシフトしているので、それはない何私が解析されました文字列の誰かがこのバグを回避する方法や、夏時間が正しく表現されているDateTimeオブジェクトに確実に日付+時刻+時間帯を構文解析するより堅牢な方法を持っていますか?ありがとうございました。
編集: わかりましたが、回避策が見つかりましたが、どれほど堅牢かはわかりません。ここで
は一例です:
ActiveSupport::TimeZone["Central Time (US & Canada)"].parse "2012-04-15 10:00"
これは正しいタイムゾーンに日付/時刻文字列を解析します。私はパースメソッドがこれを処理するためにどのように堅牢であるかわからないので、より良い回避策があるかどうかを見たいと思いますが、これはこれまでの方法です。
このような慢性的な時間帯を設定することができます Chronic.time_class = ActiveSupport :: TimeZone ['Mexico City'] –