红宝石 2 中的日期时间减法



我需要减去两个DateTime对象,以找出它们之间的小时差异。

我尝试执行以下操作:

a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
puts a - b

我得到(-1/1),类Rational的对象。

所以,问题是,我如何找出两个日期之间的区别是什么?在几小时或几天内,或者其他什么。

当我像这样减去日期时间时,这Rational是什么意思/代表什么?

顺便说一句:

当我尝试用 1 年的差减去 DateTime 时,我得到(366/1),所以当我做(366/1).to_i时,我得到天数。但是当我尝试用 1 小时的差减去两个DateTime时,它给了我-1小时数。那么,如何找出返回值的含义(小时、天、年、秒)?

当您减去两个日期时间时,您将获得以天而不是小时为单位的差异

你会得到一个精度的Rational类型(某些浮点数不能用计算机精确表示)

要获得小时数,请将结果乘以 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
# ...

这是官方文档的链接

如果你把它们

减法作为时间对象,它将以秒为单位返回结果,然后你可以相应地乘以得到分钟/小时/天/任何东西。

a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
diff = b.to_time - a.to_time    # 86400
hours = diff / 60 / 60          # 24

相关内容

  • 没有找到相关文章

最新更新