2016-03-03 139 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