2011-08-04 186 views
3

更新:我正在更新問題以反映完整解決方案。使用下面提到的time_diff gem Brett,以下代碼工作。計算天數,小時和分鐘的時間差

代碼:

cur_time = Time.now.strftime('%Y-%m-%d %H:%M') 
Time.diff(Time.parse('2011-08-12 09:00'), Time.parse(cur_time)) 

謝謝,佈雷特。

回答

8

我已經使用time_diff很容易實現這種事情之前,你可能想檢查出來。

+0

我收到了「未定義的方法'gsub!'爲2011-08-04 11:14:24 -0400:時間「。我正在嘗試確定要放置哪個文件「require'time_diff'」和「time_diff_components = Time.diff(start_date_time,end_date_time)」。我也假設這與軌道3兼容。 – Jay

+0

我將模塊中的application.rb和模塊中的「time_diff ...」放在需求中...對嗎? ...嗯...這不工作。 – Jay

+2

我正在運行rails3.1.rc4 - 將'gem'time_diff''放入我的Gemfile中足夠好,我不必明確要求它。版本0.2.1對我來說很好。 –

14

,不使用外部的寶石,你可以很容易地使用這樣的方法日期之間的差異:

def release(time) 
    delta = time - Time.now 

    %w[days hours minutes].collect do |step| 
    seconds = 1.send(step) 
    (delta/seconds).to_i.tap do 
     delta %= seconds 
    end 
    end 
end 

release(("2011-08-12 09:00:00").to_time) 
# => [7, 17, 37] 

將返回的天數,小時和分鐘的數組,並可以很容易地擴展到包括年,月和秒:

def release(time) 
    delta = time - Time.now 

    %w[years months days hours minutes seconds].collect do |step| 
    seconds = 1.send(step) 
    (delta/seconds).to_i.tap do 
     delta %= seconds 
    end 
    end 
end 

release(("2011-08-12 09:00:00").to_time) 
# => [0, 0, 7, 17, 38, 13] 
+1

嘿,@ ream88。你的解決方案也可以。我喜歡寶石。 +1爲您提供幫助。 – Jay

+0

不錯的一個!愛它 –

相關問題