时区和昨天



我有一个关于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以匹配数据库。您需要在整个过程中保持时间,这样您就不会丢失在时区转换期间发生的事情的跟踪。

相关内容

  • 没有找到相关文章

最新更新