Используйте часовой пояс UTC в time_select - PullRequest
0 голосов
/ 08 июля 2019

Я нахожусь в процессе обновления моего приложения rails с 4.1.16 до 5.2.3.

У меня есть столбец с именем duration типа time.Я использую этот столбец для сохранения продолжительности (ЧЧ: ММ).

И у меня на моем application.rb настроен часовой пояс по умолчанию:

config.time_zone = 'London'

Я использую time_select тег для этого поля.

f.time_select :duration, { include_blank:true }, required: true

Генерирует три скрытых элемента ввода со значением 0001-01-01 для полей года, месяца и дня каждое.И он генерирует два тега выбора для выбора часов и минут.При отправке формы с продолжительностью 01:00

Поведение на Rails 4.1.16:

0001-01-01 01:00:00 UTC.Следовательно, сохраняется столбец длительности 01:00:00.

Поведение на Rails 5.2.3:

0001-01-01 01:00:00 LMT -00:01.Но он сохраняет 01:01:15 в столбце длительности.

Кажется, что time_select изменилось с использованием часового пояса, настроенного вместо UTC.Пожалуйста, найдите соответствующую проблему здесь .

Кроме того, при последующем обновлении расчетной продолжительности сохраняются правильные данные, т. Е. (01:00:00), поскольку используется дата по умолчанию 2000-01-01,

Я попытался игнорировать поля даты из time_select, установив ignore_date: true.Но он использует дату 1970-01-01.Но когда я отправляю длительность с 04:00, это экономит 03:00.

Как я могу использовать часовой пояс UTC для продолжительности в полях time_select?

Спасибо.

...