2015-09-28 4 views
1
time_difference_in_sec = (DateTime.now - @given_time).to_i.abs 

where DateTime.now : #<DateTime: 2015-09-28T19:30:35+05:30 ((2457294j,50435s,957360402n),+19800s,2299161j)> 
@given_time : #<DateTime: 2015-09-28T11:30:09+00:00 ((2457294j,41409s,0n),+0s,2299161j)> 

time_difference_in_sec : 0 

Я искал alot bu, не получил правильного ответа.как найти разницу между двумя временами в рубине?

+0

Уже есть миллионы версий этого вопроса, но в любом случае ... В Ruby's Date есть методы, такие как ['<<'] (http://ruby-doc.org/stdlib-2.2.3/ libdoc/date/rdoc/Date.html # method-i-3C-3C), который обеспечивает операции выделения и добавления дней, месяцев и других единиц, которые вы можете захотеть добавить или вычесть. – Smar

ответ

3

Если вы хотите в течение нескольких секунд, вы можете просто конвертировать и штампы времени, а затем вычесть

time_difference_in_sec = (DateTime.now.to_time.to_i - @given_time.to_time.to_i).abs 

Else Вы завершаете дело с рациональными числами, и тому подобное, как показаны в других ответах ..

2

- оператор возвращает разницу в секундах:

2.2.1 :002 > 1.day.ago - 2.days.ago 
=> 86399.999778025 
2.2.1 :005 > (1.day.ago - 2.days.ago)/1.day 
=> 0.9999999986567014 
+2

Обратите внимание, что методы 'days' предоставляются ActiveSupport, а не Ruby. – Smar

2
DateTime.now - @given_time # get the number of days 
((DateTime.now - @given_time) * 24 * 3600).to_i # get seconds 

(DateTime.now - @given_time).class 
=> Rational 

Рациональное: рациональное число может быть представлено в виде парного целого числа; a/b (b> 0). Где a числитель и b - знаменатель. Целое число a равно рациональному a/1 математически.

Смежные вопросы