我想在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
或者将它们转换为时间然后减去更好吗?必须为我的任务保留时区信息。
答案 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