Я имею дело с датами и временем в Rails и Postgres и сталкиваюсь с этой проблемой:
База данных находится в формате UTC.
Пользователь устанавливает часовой пояс по своему выбору в приложении Rails, но он используется только при получении пользователями местного времени для сравнения времени.
Пользователь сохраняет время, скажем, 17 марта 2012 г., 19:00. Я не хочу, чтобы преобразования часового пояса или часовой пояс сохранялись. Я просто хочу сохранить эту дату и время. Таким образом, если пользователь изменит свой часовой пояс, он все равно будет показывать 17 марта 2012 года, 19:00.
Я использую указанный пользователем часовой пояс только для получения записей «до» или «после» текущего времени в локальном часовом поясе пользователя.
В настоящее время я использую «отметку времени без часового пояса», но когда я извлекаю записи, рельсы (?) преобразуют их в часовой пояс в приложении, чего мне не нужно.
Appointment.first.time
=> Fri, 02 Mar 2012 19:00:00 UTC +00:00
Поскольку записи в базе данных выглядят как UTC, мой прием заключается в том, чтобы взять текущее время, удалить часовой пояс с помощью «Date.strptime(str, "%m/%d/%Y")» и затем выполните мой запрос с этим:
.where("time >= ?", date_start)
Кажется, должен быть более простой способ просто игнорировать часовые пояса вокруг. Есть идеи?