如何找到红宝石中两次的区别?

时间:2015-09-28 14:05:15

标签: ruby

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

我搜索了很多但没有得到正确答案。

3 个答案:

答案 0 :(得分:4)

如果你想要它在几秒钟内,你可以只转换为时间戳,然后减去

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

否则你最终会处理其他答案中看到的有理数字等等。

答案 1 :(得分:3)

-运算符以秒为单位返回差异:

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 :(得分: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数学。