2009-07-11 9 views
6

私は地元のタイムゾーンに時間を保存したくないですが、Sequelはそれを本当に厳しいものにしています。私はそこに入れる前にUTCに設定することができます(少し痛みます)。しかし、私がそれらを取り戻すとき、彼らは地元の日付であると仮定して、それから彼らはすべて将来8時間です。これはまだ実装されていないものですか?もしそうなら、回避策はありますか?ありがとう!SequelでUTCを使用しますか?

答えて

3

最も簡単UTCとしてリテラル文字列を返すために使用しているデータセットクラスのliteral_datetimeおよび/またはliteral_timeをオーバーライドすることです。

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

5

非常によく似た問題がありました。

この情報は続編がデータベースから返された時間のために時間や日時 のいずれかを使用することができますSequel RDoc

から撮影されています。 デフォルトはTimeです。 のDateTimeにそれを変更するには、使用:

Sequel.datetime_class = DateTime 

はまた、あなたがあなたのデータベースのタイムゾーン情報を格納していないことを確認してください。 私はPostgresを使用しており、カラムタイプはタイムスタンプなしのタイムスタンプです。

これにより、表示される日付/時刻がUTCで表示されます。 22::2009-07-13T03の日付/時刻を渡すとき、それは私のために働いてい53Z結果は2009-07-13T03として表示されます。22:53 + 00:00

18

これは現時点では古くなっていますが、元の回答が投稿されて以来、ここのベストソリューションが変更されたと思います。あなたは

Sequel.default_timezone = :utc 

を設定した場合の続編はUTCとして、すべての回を治療し、文句を言わないの問題で説明した動作を示します。

詳細情報を探すhttp://sequel.jeremyevans.net/rdoc/classes/Sequel/Timezones.html

関連する問題