Я нахожусь в процессе обновления моего приложения 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?
Спасибо.