我遇到导轨时区的问题。
application.rb中
config.time_zone = 'Athens'
控制器
@from = (Time.zone.now-1.day).to_date
@to = (Time.zone.now).to_date
Entry.where(:created_at => @from..@to)
此查询应列出昨天创建的条目。当我列出条目时,我看到今天创建了一些条目。
例如:
现在是凌晨5点53分,我看到昨天创建的最后一个条目是在3个小时前创建的,它不能小于6个小时。任何帮助将不胜感激。
答案 0 :(得分:2)
您的数据库可能正在使用UTC时间戳(至少应该是这样),但Time.zone.now
位于您当地的时区。然后你拨打to_date
并丢失时区信息。试试这个:
@from = (Time.zone.now - 1.day).beginning_of_day.utc
@to = (Time.zone.now).beginning_of_day.utc
Entry.where(:created_at => @from..@to)
因此,您调用beginning_of_day
返回00:00:00,然后使用utc
转换为UTC,以将您的时间戳记录为UTC以匹配数据库。你希望通过这个保持时间周期,这样你就不会忘记在时区过渡期间发生的事情。