在time_select

时间:2019-07-08 14:33:20

标签: ruby-on-rails datetime time-select

我正在将My rails应用程序从4.1.16升级到5.2.3。

我有一个名为duration的类型为time的列。我正在使用此列来保存持续时间(HH:MM)。

我在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保存在工期列中。

似乎使用已配置的时区而不是UTC更改了time_select。请找到相关问题here

此外,在以后的估计持续时间更新中,由于它使用默认日期2000-01-01,因此保存了正确的数据,即(01:00:00)。

我尝试通过设置ignore_date: true来忽略time_select中的日期字段。但是它使用日期1970-01-01。但是,当我使用04:00提交持续时间时,它会保存03:00

如何在time_select字段的持续时间内使用UTC时区?

谢谢。

0 个答案:

没有答案