Как запросить созданный_вчера за вчерашний день с определенным часовым поясом - PullRequest
1 голос
/ 08 февраля 2012

Прямо сейчас у меня следующий запрос:

User.find(:all, :conditions => ["guest = ? AND created_at >= ?", false , (Date.yesterday)]).count

Проблема вчера на сервере rails / db - GMT.И где мне нужно рассчитать счет в PST.

Как я могу обновить запрос выше, чтобы найти всех пользователей, созданных вчера в часовом поясе PST?

Спасибо

Ответы [ 2 ]

5 голосов
/ 08 февраля 2012

Попробуйте это

@from = (Time.zone.now - 1.day).beginning_of_day.in_time_zone('Pacific Time (US & Canada)')
@to   = (Time.zone.now).beginning_of_day.in_time_zone('Pacific Time (US & Canada)')
User.count(:conditions => ["created_at >= ? and created_at <= ?", @from, @to])
1 голос
/ 08 февраля 2012

Для этого есть тонкая настройка - Date.yesterday использует Date.current, которая будет использовать часовой пояс, тогда как Date.today - нет. Если вы установите часовой пояс на тот, где уже завтра (например, Европа / Берлин, как я набираю это), тогда вы можете получить Date.today == Date.yesterday:

>> Time.zone = "Europe/London"
=> "Europe/London"
>> Date.today == Date.yesterday
=> false

>> Time.zone = "Europe/Berlin"
=> "Europe/Berlin"
>> Date.today == Date.yesterday
=> true

Использование Date.current == Date.yesterday работает, как ожидалось. Этот пример показан в irb, поэтому, пожалуйста, попробуйте найти способ поместить его в ваше приложение rails соответствующим образом. Примечание: Я не показываю, что вам нужно, потому что вы делали некоторое кодирование, прежде чем инициализировать часовой пояс и т. Д., Но просто добавили несколько достойных битов. Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...