часовой пояс и вчера - PullRequest
       1

часовой пояс и вчера

0 голосов
/ 25 июля 2011

У меня проблема с часовыми поясами.

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 Ответ

2 голосов
/ 25 июля 2011

Ваша база данных, вероятно, использует метки времени 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 для соответствия базе данных. Вы хотите, чтобы время суток оставалось неизменным, чтобы не потерять счет того, что происходит во время переходов часового пояса.

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