サーバーのデフォルトのタイムゾーンは +0400 (モスクワ) です。UTC 形式での DB へのすべてのインスタンスの記録。IE: ユーザーが 04-00 でアイテムを作成すると、これは 00-00 として記録されます。手に入れようとしているとき
Item.last
UTC の raw 時刻が表示されます。私が尋ねているとき
Item.last.created_at
+0400 タイムを取得しました。しかし!次のような標準時間関数を使用しているとき
Item.where('created_at > ?', Time.now.beginning_of_day)
SQLクエリを作成しています
SELECT `items`.* FROM `items` WHERE (items.created_at > '2012-11-30 00:00:00')
それ以外の
SELECT `items`.* FROM `items` WHERE (items.created_at > '2012-11-29 20:00:00')
だから私は4時間を失っています。ちょっと困ったのは、in_time_zone の使用です。
Time.now.beginning_of_day.in_time_zone(-4)
しかし、私はジェダイのやり方ではありません:D 何かアイデアはありますか?