У меня есть база данных, которая записана в приложением ненаправляющих и считана из приложением направляющих. Существует поле даты и времени в базе данных, и данные, сохраненные в этом поле, хранятся в Восточное Время. В моем приложении для направляющих я понимаю, что могу установить часовой пояс приложения в своем environment.rb файле путем выполнения config.time_zone = 'Eastern Time (US & Canada)'
. Однако направляющие предполагают, что данные, сохраненные в базе данных, хранятся в UTC и преобразовывают от конфигурации time_zone до UTC, поскольку это втягивает информацию и из базы данных.
Существует ли способ сказать направляющим, что данные в этом конкретном поле или даже всех моих полях даты и времени, являются Восточным Временем и не UTC?
Мое первое предложение - исправить другое приложение. Другое приложение должно сохранять смещение по всемирному координированному времени с датой. Если вы попытаетесь обойти проблему, вы просто создадите больше. Например, что происходит, когда идет переход на летнее время, изменятся ли смещения?
С учетом сказанного и не имеющего другого выбора - я бы сделал что-то в этом роде для поля created_at
:
def created_at_in_eastern
DateTime.parse(self.created_at.strftime("%D %T EST")) if self.created_at
end
или вы можете использовать EDT
в зависимости от того, как данные сохраняется, просто прочтите отказ от ответственности вверху - это взлом!