【问题标题】:Difference in hours between 2 DateTime2 DateTime 之间的小时差
【发布时间】:2018-04-18 18:46:34
【问题描述】:

我想找出 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

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

【问题讨论】:

  • @SamHecquet,这不是 Rails!
  • @SamHecquet 这个问题也专门针对时间。 DateTime 是一个不同的野兽。

标签: ruby datetime timezone


【解决方案1】:

首先来自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

【讨论】:

  • in a historical context 是什么?
  • 阅读我链接到的文档。 DateTime 考虑了几个世纪以来计时方法的变化,例如准确地计算出莎士比亚死后的时间。不是大多数应用程序的要求。
  • 好的。那么我怎样才能找到 2 Time 之间的小时数差异呢?
  • @MattJohnson 我一整天都在想这个问题,并决定从秒转换为小时比从几天转换为小时更有意义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
相关资源
最近更新 更多