Простая вещь, которую я хочу, - сохранить DateTime в UTC в базе данных и снова получить ее в UTC, но рельсы, похоже, предполагают, что я сохранил DateTime в своем локальном часовом поясе и добавляет разницу в 8 часов (ТИХООКЕАНСКОЕ СТАНДАРТНОЕ ВРЕМЯ). У меня есть поле DateTime в моей модели. Если я посылаю запрос (PUT), чтобы обновить это поле в конкретном случае моей модели, как-то часовые пояса перепутать по какой-либо причине:Rails Postgres Обработка часового пояса
Отправки на рельсы через PUT: 2012-02-17T03: 46: 58Z
Возврат через последующие GET: 2012-02-17T11: 46: 58Z
Разница во времени ровно 8 часов и может быть объяснена моим часовым поясом, который является PST (-08: 00).
Я использую Datamapper 1.2 на Rails 3.1.3.
Я установил часовой пояс приложения для настройки в UTC явно.
Я также попытался использовать типы dm-zone. Ничего не изменил для меня.
Git-bisect в моем репо показал, что это неправильное поведение было введено, когда я переключил базу данных на postgres из исходного sqlite. Это commit только изменило database.yml и gemfile. Ничего больше.
Любые идеи?
Вы взглянули на свою базу данных Postgres и посмотрели, что представляет собой необработанное значение базы данных для вашего поля datetime? –
У меня такая же проблема (с использованием «dm-zone-types» прямо сейчас). Я на Синатре, используя Datamapper 1.2 и dm-zone-types 0.3. Время, похоже, хранится как UTC (в соответствии с возвращаемым значением из метода «дамп» в zoned_time.rb), но после его получения часовой пояс - это моя локальная зона с неправильным временем. POST: 2012-02-16 11:25:52 +0100, «CET» Значение в базе: 2012-02-16 10:25:52 +0000, «UTC» GET: 2012-02-16 10:25:52 +0100, "CET" –
Необработанное значение в базе данных "2012-02-17 03:46:58". Это время UTC и значение, которое я хотел бы получить. Где-то между вытаскиванием значения из базы данных и отправкой его клиенту, рельсы, похоже, делают некоторые обманки, которые я не могу понять. Спасибо за ваш вклад! – kaihowl