我有一个关于rails时区的问题。
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 am,我看到昨天创建的最后一个条目是3小时前创建的,它一定不小于6小时。
您的数据库可能使用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以匹配数据库。您需要在整个过程中保持时间,这样您就不会丢失在时区转换期间发生的事情的跟踪。