0

毎時データを取得してキャッシュし、そのデータを 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 時 6 分 (-0700) にレコードを作成したときに、真夜中前後に作成されたという内容が表示されています。

ありがとう。

4

1 に答える 1

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)
  }
于 2013-06-27T02:28:16.083 に答える