我的服务器默认时区是 +0400(莫斯科)。以 UTC 格式记录到数据库的所有实例。IE:用户在04-00创建项目,记为00-00。当我试图得到
Item.last
我看到了 UTC 原始时间。当我问
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 有什么想法吗?