在输入和保存的数据库数据之间划出时区



,因此输入表格从datetime_select

提供
"meeting"=>{"start_time[...] "start_time(4i)"=>"13", "start_time(5i)"=>"15"}

然后,控制器花时间根据父属性来计算end_time

@initiate = DateTime.civil(date["start_time(1i)"].to_i, date["start_time(2i)"].to_i, date["start_time(3i)"].to_i, date["start_time(4i)"].to_i, date["start_time(5i)"].to_i)
params[:meeting][:end_time] = @initiate + (@product.minutes.to_i).minutes

但是,给定时间为60分钟(GMT休息1小时会使事情变得更有趣!),数据库填充以下:

["start_time", "2017-12-29 13:15:00.000000"], ["end_time", "2017-12-29 15:15:00.000000"]

解决此问题的最有效,最简洁的方式是什么?

Note 这是为了使数据库使用连贯的时区数据编写,这不包括用户time_zone查看问题...

看来,在DateTime上执行添加或减法可以使用全局config.time_zone设置进行隐式时区转换,而不是DateTime中提供的偏移(当未指定时默认为0))。

要解决此问题,请在config/application.rb文件中设置config.time_zone = 'UTC'

这将影响整个应用程序,使用UTC而不是系统默认时区。

相关内容

  • 没有找到相关文章

最新更新