我有两个模型Shift
和ShiftDetail
。我有一个自动添加ShiftDetails
的Shift模型方法:
def add_shift_details
(0..6).each do |i|
shift_detail = ShiftDetail.new
t1 = Time.now
shift_detail.weekday = i
shift_detail.start_time = t1.beginning_of_day
shift_detail.end_time = t1.end_of_day
self.shift_details << shift_detail
end
end
但是当我保存实例时,数据库填充了
["start_time", "2016-03-02 23:00:00.000000"]
["end_time", "2016-03-03 22:59:59.999999"]
我正在使用Rails 4.2.5.1和ruby 2.3.0p0
我做错了什么?
更新:
当我在'rails c'中测试它时,它按预期工作:
2.3.0 :001 > Time.now.beginning_of_day
=> 2016-03-03 00:00:00 +0100
2.3.0 :002 > Time.now.end_of_day
=> 2016-03-03 23:59:59 +0100
答案 0 :(得分:2)
您的数据库在UTC时区存储DateTime
,而Rails与柏林时区一起使用。柏林的午夜(格林尼治标准时间+1)与UTC的格林威治标准时间(格林尼治标准时间午夜)不相等:)
您有两种选择:
Time.now.utc
或DateTime.now.new_offset(0)
查看此帖子了解更多信息: https://stackoverflow.com/a/32229086/4304188