rails中的时区真让我感到困惑

时间:2013-06-27 01:07:28

标签: ruby-on-rails time timezone

我正在拉小时数据,缓存它,然后在javascript卷轴中使用该数据。无论如何。这是主要问题。我正在使用:

config.time_zone = 'Eastern Time (US & Canada)'

好的看起来很好,当我这样做时:

Entry.first.created_at #datetime -0500

看起来很好,除非我使用以下范围

  scope :hourly, lambda {|h|
    g = DateTime.current.beginning_of_day + h.hours
    where(created_at: g..g+1.hours)
  }
  scope :hourly_by_date, lambda {|h,date|
    g = DateTime.parse(date + " 00:00:00 Eastern Time (US & Canada)") + h.hours
    where(created_at: g..g+1.hours)
  }
  scope :hours_ago, lambda {|h|
    g = DateTime.current.beginning_of_hour - h.hours
    where(created_at: g..g+1.hours)
  }

它显示的东西说它是在午夜之前/之后创建的,当时我在下午6:06(-0700)创建了记录 这令人沮丧,我可以使用一些指导。

感谢。

1 个答案:

答案 0 :(得分:0)

如何将日期时间转换为utc并将值与数据库进行比较

 scope :hourly, lambda {|h|
    g = (DateTime.current.beginning_of_day + h.hours).utc
    where(created_at: g..g+1.hours)
  }
  scope :hourly_by_date, lambda {|h,date|
    g = (DateTime.parse(date + " 00:00:00 Eastern Time (US & Canada)") + h.hours).utc
    where(created_at: g..g+1.hours)
  }
  scope :hours_ago, lambda {|h|
    g = (DateTime.current.beginning_of_hour - h.hours).utc
    where(created_at: g..g+1.hours)
  }