2011-08-04 28 views
3

UPDATE:私は完全なソリューションを反映するために質問を更新しています。以下に述べるtime_diff宝石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:時間 "です。私は置いて、「time_diff_components = Time.diff(START_DATE_TIME、END_DATE_TIME)」「『time_diff』を必要と」するファイルを決定しようとしています。これはレール3と互換性があります。 – Jay

+0

私はモジュールの前にapplication.rbにrequireを置き、モジュールには "time_diff ..."を置いていますか? ...うーん...それは動作していません。 – Jay

+2

私はrails3.1.rc4を実行している - 私のGemfileに '宝石」time_diff''を置くには十分だった、私は明示的にそれを必要とする必要はありませんでした。バージョン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。あなたのソリューションも同様に機能しました。私は宝石thoが好きです。 +1してください。 – Jay

+0

いいです!大好きです。 –