2012-05-05 114 views
2

在ruby/rails中是否有一個方法用於加/減日期和時間以及時區,輸出爲天數,小時,分鐘和秒數而不是DataTime格式?紅寶石欄 - 減去日期時間

t1 = "2012-05-05 00:00:02 -0400" 
t2 = "2012-05-04 00:00:00 -0500" 

time_diff = (Time.now() - Time.parse(t1)).to_s 
#Or 
time_diff = (Time.parse(t1) - Time.parse(t2)).to_s 

我找1 Day, 01:59:58 結果應該#of Days HH:MM:SS格式

+0

不應該結果是23小時和2秒? –

+0

@AndrewMarshall - 對,我做錯了。手動完成所有這些數學過於複雜。所以基本上結果應該是'#Days HH:MM:SS'。 :)試圖做到這一點MySql,沒有運氣那裏。 Ruby或MySql都可以做這個數學計算。 –

回答

8

據我所知沒有什麼內置在Ruby或者Rails的做到這一點。有distance_of_time_in_words,但它看起來比你看起來模糊的時間(例如「約7天」)。

儘管如此,編寫一個方法來做這件事相當簡單。鑑於秒差,這會給你的差異的天,小時和秒:

def time_length seconds 
    days = (seconds/1.day).floor 
    seconds -= days.days 
    hours = (seconds/1.hour).floor 
    seconds -= hours.hours 
    minutes = (seconds/1.minute).floor 
    seconds -= minutes.minutes 
    { days: days, hours: hours, minutes: minutes, seconds: seconds } 
end 

time_length(Time.parse(t1) - Time.parse(t2)) 
#=> {:days=>0, :hours=>23, :minutes=>0, :seconds=>2.0} 
+0

謝謝安德魯!你總是在幫助! –