3

Thu Jul 18 11:30:00 +0000 2013との間のような2つの日付の間の正確な時間を日と時間で取得したい Sat Jul 20 10:30:00 +0000 2013. の差があり1 day and 23 hoursます。Rails の ActionView モジュールには 2 つのメソッドが含まれています

(1) distance_of_time_in_words
(2) distance_of_time_in_words_to_now

しかし、彼らは1日または2日のような結果を返します。時間も必要です。

4

4 に答える 4

7

宝石を使用したくない場合は、次の計算を実行して、分と秒の正確な差も取得できます-

t1 = Time.now #date1
t2 = (Time.now - 10.hours) #date2

seconds = (t1.to_i - t2.to_i)
days = seconds / 86400;
hours = seconds / 3600;
minutes = (seconds - (hours * 3600)) / 60;
seconds = (seconds - (hours * 3600) - (minutes * 60));
于 2013-11-25T14:42:58.493 に答える
6

この問題を解決するには、プラグインdotiwが役立つ場合があります。

dotiw は Rails のプラグインで、デフォルトの distance_of_time_in_words をオーバーライドし、より正確な出力を提供します。

于 2013-07-16T14:29:47.870 に答える
4

そのための宝石があります: time_diff!

https://rubygems.org/gems/time_diff

時差が表示され、出力をフォーマットすることもできます。例:

'%y, %M, %w, %d and %h:%m:%s'戻ります:'1 year, 2 months, 3 weeks, 4 days and 12:05:52'

構文も非常に単純です。

> Time.diff(Time.parse('2010-03-06 12:30:00'), Time.parse('2011-03-07 12:30:30'), '%y, %d and %h:%m:%s')
=> {:year => 1, :month => 0, :week => 0, :day => 0, :hour => 18, :minute => 0, :second => 30, :diff => '1 year and 18:00:30'}

これから必要なものを手に入れることができるはずです。

ハッピーコーディング!

于 2013-07-16T14:27:46.720 に答える
1
date_1 = DateTime.parse("Thu Jul 18 11:30:00 +0000 2013")
date_2 = DateTime.parse("Sat Jul 20 10:30:00 +0000 2013")

difference_in_hours =  (date_2.to_time - date_1.to_time) / 60 / 60
于 2013-07-16T14:29:59.083 に答える