我正在将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时区?
谢谢。