Полевой часовой пояс базы данных Rails/Activerecord

У меня есть база данных, которая записана в приложением ненаправляющих и считана из приложением направляющих. Существует поле даты и времени в базе данных, и данные, сохраненные в этом поле, хранятся в Восточное Время. В моем приложении для направляющих я понимаю, что могу установить часовой пояс приложения в своем environment.rb файле путем выполнения config.time_zone = 'Eastern Time (US & Canada)'. Однако направляющие предполагают, что данные, сохраненные в базе данных, хранятся в UTC и преобразовывают от конфигурации time_zone до UTC, поскольку это втягивает информацию и из базы данных.

Существует ли способ сказать направляющим, что данные в этом конкретном поле или даже всех моих полях даты и времени, являются Восточным Временем и не UTC?

6
задан gotosleep 14 July 2010 в 14:41
поделиться

1 ответ

Мое первое предложение - исправить другое приложение. Другое приложение должно сохранять смещение по всемирному координированному времени с датой. Если вы попытаетесь обойти проблему, вы просто создадите больше. Например, что происходит, когда идет переход на летнее время, изменятся ли смещения?

С учетом сказанного и не имеющего другого выбора - я бы сделал что-то в этом роде для поля created_at :

def created_at_in_eastern
  DateTime.parse(self.created_at.strftime("%D  %T EST")) if self.created_at
end

или вы можете использовать EDT в зависимости от того, как данные сохраняется, просто прочтите отказ от ответственности вверху - это взлом!

0
ответ дан 10 December 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: