Тип рельсов и часовые пояса - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть приложение Rails, которое хранит значения времени, и я установил часовой пояс в config / application.rb.

Это работает правильно для столбцов даты и времени, но столбцы времени показывают время в UTC, а неуказанный часовой пояс.

Время в этих двух примерах сохраняется в базе данных как 20:50 (UTC), но когда я показываю его в представлении, столбец времени отображается как UTC, а столбец datetime -правильно отображается в выбранном часовом поясе.

time2:     2000-01-01 20:50:00 UTC
datetime2: 2012-02-09 21:50:00 +0100

Это ожидаемое поведение?Разве типы времени не должны использовать настроенный часовой пояс?

Ответы [ 3 ]

2 голосов
/ 12 февраля 2012

ActiveRecord использует TimeWithZone , где вам могут помочь такие методы, как localtime, utc, utc?.

0 голосов
/ 15 февраля 2012

Я отказываюсь от этого, Rails, похоже, полностью игнорирует config.time_zone с атрибутами времени и просто использует его для атрибутов datetime по причинам, которые я не понимаю.И, как кажется, не многие другие это понимают.

Я изменю атрибуты времени на тип string и проанализирую его как объект времени, когда мне нужно работать с ним как с объектом времени.Если это будет исправлено в более поздней версии Rails, я всегда могу вернуться к использованию атрибутов времени, но теперь мне нужно продолжать, это сдерживает меня на несколько дней.

Но спасибо за попытку помочь :)

0 голосов
/ 12 февраля 2012

Да, это ожидаемое поведение. Rails (ActiveRecord) сохраняет время в UTC, а затем покрывает его в любом часовом поясе, установленном Time.zone при рендеринге в представлении.

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