Полное игнорирование часовых поясов в Rails и PostgreSQL

Я имею дело с датами и временем в 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)

Кажется, должен быть более простой способ просто игнорировать часовые пояса вокруг. Есть идеи?

155
задан Erwin Brandstetter 13 April 2018 в 23:21
поделиться