2 DateTime之间的小时差异

时间:2017-11-06 14:58:10

标签: ruby datetime timezone

我想在2 DateTime之间找到差异小时在Ruby中。最好的方法是什么?

a1 = DateTime.now - dt1
=> (84390054590833/28800000000000)

a1.to_i
=> 2 # it's not in hours; the real amount of hours is around 70 for this case

或者将它们转换为时间然后减去更好吗?必须为我的任务保留时区信息。

1 个答案:

答案 0 :(得分:3)

首先,来自docs

  

那么什么时候应该在Ruby中使用DateTime?何时应该使用Time?几乎可以肯定你会想要使用Time,因为你的应用可能正在处理当前的日期和时间。但是,如果您需要在历史背景中处理日期和时间,则需要使用DateTime ...

如果您想继续使用DateTime,其减法方法会为您提供一天中的分数的差异

DateTime.new(2000, 1, 3) - DateTime.new(2000, 1, 1)
# (2/1)

实现这一点实际上是不可能的,因为每天都不会24小时。您需要转换为Time个对象以获得与秒数的差异,然后将其从秒转换为小时

diff_in_hours = (dt1.to_time - dt2.to_time) / 3_600