異なるタイムゾーン(PDTとCDT)の異なる2つのステージングサーバーにデプロイされたレールアプリケーションをテストする際に、この問題が発生しました。両方のサーバーには、デフォルトのUTC config.time_zoneを使用するレールがあります。タイムゾーンの設定が異なるだけでなく、両方のサーバーの時計が正しく設定されています。以下はRails Time.zoneの解析が期待通りに機能しない
私はレールコンソールで見たものである。
システムのタイムゾーンは、CDT、
システムのタイムゾーンがPDTされているサーバー上Time.zone.parse("Mon May 28 2012 00:00:00 GMT-0700 (PDT)")
=> Mon, 28 May 2012 05:00:00 UTC +00:00
、
Time.zone.parse("Mon May 28 2012 00:00:00 GMT-0700 (PDT)")
=> Mon, 28 May 2012 07:00:00 UTC +00:00
されているサーバー上文字列Mon May 28 2012 00:00:00 GMT-0700 (PDT)
は、クライアントから送信された任意の日時値です。これは、rails paramsコレクションを介して入ってくるjavascriptのDateオブジェクトを使用する場合の一般的なシナリオです。
なぜ2つの結果が異なるのですかTime.zone.parse(identical_date_time_string)
?私は両方のシステム上で次のコマンドを実行した場合
、結果が正しい表示されます:
"Mon May 28 2012 00:00:00 GMT-0700 (PDT)".to_time
=> 2012-05-28 07:00:00 UTC
私はUbuntuの上で、ルビー1.9.3-P125とレール3.2.3を実行していますよ。
がの日付文字列を処理するためにactivesupportの::タイムゾーンにパッチを適用するマネージドレールと問題https://github.com/rails/rails/issues/5770 –
を開設行う方法ですここでフォーマットしてください。コメントには、[here](https://github.com/rails/rails/issues/5770#issuecomment-5010661)のパッチがあります。 –
元の問題は、このコミットを使用して、レールで修正されました。https://github.com/rails/rails/commit/005d910624bbfa724b638426a000c8074d4201a2 –