以下返回(5/12)
,Rational
對象。在DateTime減法中返回分鐘
d = DateTime.current
d2 = d + 10.hours
d2 - d
如何我會得到來自兩個時間點的微小差別?
以下返回(5/12)
,Rational
對象。在DateTime減法中返回分鐘
d = DateTime.current
d2 = d + 10.hours
d2 - d
如何我會得到來自兩個時間點的微小差別?
(d2 - d).class
=> Rational
Rational:有理數可以表示爲成對的整數; a/b(b> 0)。 a是分子,b是分母。整數等於理性a/1在數學上。
d2 - d
=> (5/12) #get the number of days
((d2 - d) * 24 * 60).to_i
=> 600 # get the number of minutes
DateTimes最終只是一個數字,浮點數或整數,數字代表自時代以來的秒數。當你做加法和減法時,它會用這些數字做數學運算,如果結果是一個日期時間是有意義的,它通常會返回一個日期時間,但如果沒有,它只會給你回數字。
當你從另一個時間中減去一個時間,差異是秒數。 Rational
類是一種將數字作爲分數而不是Float或Int的方法。
調用to_i
或to_f
將根據您的要求將數字轉換爲int或float。然後你有幾秒鐘的時間,你可以將它分成60分鐘。
小心這個問題:在ruby中,如果你用int除int,它會將結果舍入爲整數。例如:
90/60
=> 1
如果你想返回浮點數,在這種情況下爲1.5,確保至少有一個操作數是浮點數。
所以,這應該工作:
d = DateTime.current
d2 = d + 10.hours
diff_minutes = (d2 - d)/60.0
date_diff = date_2 - date_1
date_diff_array = Date.day_fraction_to_time(diff) # => [h, m, s, frac_s]
date_diff_array[0] # hours
date_diff_array[1] # minutes
date_diff_array[2] # seconds
的[減去日期在Ruby和獲得分鐘之差(
可能重複http://stackoverflow.com/questions/2852605/subtract-dates-in-ruby-and-get - 分鐘 - 分鐘) – IngoAlbers