私がほしいと思う簡単なことは、データベースにUTCでDateTimeを保存してUTCでそれを再度取得することですが、レールは私のローカルタイムゾーンにDateTimeを保存し、 (PST)。私はモデルにDateTimeフィールドを持っています。Rails Postgresタイムゾーンの処理
PUTを経てレールに送信::2012-02-17T03:46:58Z
私がリクエストを送信した場合は何らかの形で何らかの理由でごちゃ混ぜタイムゾーン、私のモデルの特定のインスタンスでこのフィールドを更新する(PUT)GET:2012-02-17T11:46:58Z
時間差は正確に8時間であり、私のタイムゾーンはPST(-08:00)で説明することができます。
私はDatamapper 1.2 on Rails 3.1.3を使用しています。
アプリケーションの設定タイムゾーンを明示的にUTCに設定しました。
また、dm-zone-typeを使用しようとしました。私のために何も変えなかった。
私のレポのgit-bisectは、データベースを元のsqliteからpostgresに切り替えたときにこの誤動作が導入されたことを明らかにしました。このコミットは、database.ymlとgemfileを変更しただけです。他に何もない。
アイデア?
あなたのPostgresデータベースを見て、あなたのdatetimeフィールドの生のデータベース値は何ですか? –
私はまったく同じ問題を抱えています(今は 'dm-zone-types'を使っています)。私はDatamapper 1.2とdm-zone-types 0.3を使ってSinatraにいます。時刻は(zoned_time.rbの "dump"メソッドからの戻り値に従って)UTCとして保存されているようですが、取得した後、タイムゾーンが誤った時刻のローカルゾーンになります。 POST:2012-02-16 11:25:52 +0100、 "CET"データベースの価値:2012-02-16 10:25:52 +0000、 "UTC" GET:2012-02-16 10:25:52 +0100、 "CET" –
データベースの生の値は "2012-02-17 03:46:58"です。それがUTCの時間と私が受けたいと思う価値です。データベースから値を引き出してクライアントに送るまでの間、レールは私がかなり理解できないトリッキーなことをするようです。あなたのご意見ありがとうございます! – kaihowl