我想找到 2 个日期时间之间的小时差异。在红宝石中。最好的方法是什么?
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
还是将它们都转换为时间然后减去更好?必须为我的任务保留时区信息。
首先,从文档中:
那么什么时候应该在 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