2016-03-03 60 views
1

我得到了两个模型ShiftShiftDetail。我有一个自动添加ShiftDetails一个变速模型方法:beginning_of_day没有正确计算时间

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和红宝石2.3.0p0

实例

我做错了什么?

UPDATE:在UTC时区

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

是您的机器上的时间设定是否正确? –

+0

它是。我在Mac上的系统时间是正确的。 – st4rbuck

+0

在'application.rb'文件中检查你的时区 –

回答

2

你的数据库存储DateTime而滑轨与柏林时区的工作原理:

当我在测试“轨道C”,它将按预期工作。柏林的午夜(GMT + 1)不与UTC的(GMT)午夜:)

等于你有两个选择:

  1. 有一个UTC时区你的算法工作
    您可以使用Time.now.utcDateTime.now.new_offset(0)
  2. 让您的数据库存储日期在您的特定时区(柏林在这种情况下)。我强烈建议不要这样做。

退房这个职位的详细信息: https://stackoverflow.com/a/32229086/4304188

+0

谢谢。现在工作正常。 :) – st4rbuck