2016-09-21 70 views
0

我試圖只在最近30分鐘內創建此記錄時才允許銷燬記錄。返回奇數值的日期減法

然後我取回我的紀錄(DATE2)的created_at價值和核對Time.now(日期1):

date1 = 2016-09-21 19:44:52 +0200 
date2 = 2016-09-21 17:23:16 UTC 

然後我就。減去兩個:

(date1-date2).minutes.to_i 

但返回的結果是在成千上萬(類似97000)和增加非常快,當我刷新..(作爲Time.now變化),而我們應該只得到141分鐘根據上述示例值

+0

這裏有一個提示:'30.minutes.to_i'返回'1800'。 (刪除'to_i'找到解釋) – Stefan

+0

well'to_i'當我刪除它時沒有做太多工作。它將擦除兩個日期之間差異的小數部分。雖然'分鐘'似乎是一個有效的Ruby方法,但與時間無關,這就是爲什麼我猜我的結果都搞砸了。我找到了'to_f',它返回我可以用60除以60分鐘的秒數:'(date1-date2).to_f/60'。我仍然有一個差異,但我想這是因爲一個是UTC和另一個+0200。將嘗試修復它.. – Maxence

回答

2

.minutes是什麼讓事情不起作用。刪除它,它應該工作。 如果您希望找到迄今爲止您需要減去它們之間的差距,請將結果除以60並將其舍入。

((date1 - date2)/60).round 

希望它有幫助,快樂的紅寶石編碼!

+0

謝謝你是正確的。我將'to_f'應用於結果,但redondant。其實我也有一個時區差異。以下作品:'(date1.utc-date2.utc)/ 60' – Maxence

1

您需要首先將本地時間(time1)轉換爲UTC時間或UTC時間(time2)以本地時間。

require 'time' 

time1 = Time.parse('2016-09-21 19:44:52 +0200') 
    #=> 2016-09-21 19:44:52 +0200 
time2 = Time.parse('2016-09-21 17:23:16 UTC') 
    #=> 2016-09-21 17:23:16 UTC 

(time1.utc - time2)/60 
    #=> 21.6 
+0

確實。這是我使用的答案。我給格雷戈裏留下了正確的答案,因爲它非常接近,並且標記爲有用。 tks – Maxence

+0

我認爲'time1'對'Time'對象比'date1'更好。 :-) –

+0

以及我既不使用。在我的代碼中,一個是原始的'Time.now.utc',另一個是對記錄中的created_at的調用。試圖讓它簡單^^ – Maxence