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