7

自分のローカル タイムゾーンで時刻を保存したくないのですが、Sequel のせいでとても苦労しています。それらをそこに入れる前にUTCに設定することができます(少し面倒です)が、それらを元に戻すと、それらはローカル日付であり、すべて8時間先であると想定されます。これはまだ実装されていないものですか?もしそうなら、回避策はありますか?ありがとう!

4

3 に答える 3

23

これは現時点では少し古くなっていますが、元の回答が投稿されてから、ここでの最善の解決策が変更されたと思います。設定した場合

Sequel.default_timezone = :utc

続編は常にUTCとして扱い、質問で説明されている動作を示しません。

詳細については、http: //sequel.jeremyevans.net/rdoc/classes/Sequel/Timezones.html を参照してください。

于 2011-09-24T19:36:22.587 に答える
5

私自身、非常によく似た問題がありました。

この情報は、Sequel RDocから取得したものです。

Sequel は、データベースから返される時刻に Time または DateTime のいずれかを使用できます。デフォルトは時間です。DateTime に変更するには、次を使用します。

Sequel.datetime_class = DateTime

また、データベースにタイムゾーン情報を保存していないことを確認してください。Postgres を使用しており、列の型はタイム ゾーンなしのタイムスタンプです。

これにより、表示される日付/時刻が UTC になります。2009-07-13T03:22:53Zの日付/時刻を渡すと、結果が2009-07-13T03:22:53+00:00として表示されます。

于 2009-07-13T03:56:51.883 に答える
4

それらを UTC として配置しようとする最も簡単な方法は、使用しているデータセット クラスのliteral_datetime および/またはliteral_time をオーバーライドして、UTC 時刻のリテラル文字列を返すことです。

それらを UTC で取得するかどうかは、使用しているアダプターによって異なります。たとえば、postgres アダプターは Sequel.string_to_datetime を呼び出しますが、これは Sequel.datetime_class (デフォルトでは Time) で parse を呼び出すだけです。datetime 列にタイムゾーン情報が含まれている場合、問題なく動作するはずです。タイムゾーン情報が含まれていない場合、Time.parse は現地時間が指定されていると想定します。その場合、Sequel.string_to_datetime をオーバーライドして、常に UTC オフセットを含む時刻を返すようにすることができます (おそらく Time.parse(s).gmtime を呼び出します)。

于 2009-08-04T21:51:23.150 に答える