时区和昨天

时间:2011-07-25 02:57:41

标签: ruby-on-rails timezone

我遇到导轨时区的问题。

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个小时。任何帮助将不胜感激。

1 个答案:

答案 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以匹配数据库。你希望通过这个保持时间周期,这样你就不会忘记在时区过渡期间发生的事情。