我需要减去两个 DateTime
对象,以便找出它们之间的小时差。
我尝试执行以下操作:
a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
puts a - b
我得到 (-1/1)
,Rational
类的对象。
那么,问题是,我如何找出两个日期之间的区别?数小时或数天,或其他时间。
当我像那样减去 DateTimes 时,这个 Rational
意味着/代表什么?
顺便说一句:
当我尝试用相差 1 年的时间减去 DateTime
时,我得到 (366/1)
,所以当我执行 (366/1).to_i
,我得到天数。但是,当我尝试用相差 1 小时的时间减去两个 DateTime
时,得到的结果是 -1
,即小时数。那么,如何同时找出返回值(小时、天、年、秒)的含义呢?
最佳答案
当您减去两个日期时间时,您会得到天数的差值,而不是小时数。
你得到一个 Rational
精度类型(一些 float 不能用计算机精确表示)
要得到小时数,将结果乘以 24,分钟乘以 24*60 等...
a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
(a - b).to_i
# days
# => -1
((a - b)* 24).to_i
# hours
# => -24
# ...
关于ruby - ruby 2 中的 DateTime 减法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30953974/