2017-10-19 8 views
0

現在時間はサンフランシスコでは午後12時33分です。ドキュメントとprevious SO threadsから判断アクティブなレコードクエリ中にTime.use_zoneは無視されます

irb(main):027:0> Time.use_zone("Pacific Time (US & Canada)") { puts Time.zone.now } 2017-10-19 12:33:06 -0700

Time.use_zone("Pacific Time (US & Canada)") { Event.where("starts_at >= ?", Time.zone.now) } Event Load (1.4ms) SELECT "events".* FROM "events" WHERE (starts_at >= '2017-10-19 19:33:22.532660')

、これがあること、正しい使用方法に表示されます。私は何が欠けていますか?

UPDATE:

がARクエリにto_sの追加は、正しいタイムゾーンを使用します。

答えて

1

この特定のクエリについては、あまり心配するべきではありません。 SELECTクエリではTime.zone.nowがUTCに変換されましたが、データベースに向かうすべてのものもUTCに変換されました。

これは、Railsがすべてのdatetimesをデータベースに格納して(ルックアップする)デフォルトでUTCに変換するためです。時間が午後12時33分の場合は、UTCは19:33です。

+0

DBにローカルタイムを保存する場合は、app configに 'config.active_record.default_timezone =:local'を追加できます。 –

関連する問題