查找两个日期之间的总小时数

新手上路,请多包涵

我有两个 Date 对象,我需要获取时差,以便确定它们之间的总小时数。他们碰巧来自同一天。我想要的结果会有小时和分钟。

当我在 Date 对象上使用 .toString() 时,我得到这个:Fri Dec 18 08:08:10 CST 2009

我试过以下方法:

 long diff = (this.endDate.getTime() - this.startDate.getTime()) / (60 * 60 * 1000);

但这只给了我几个小时,而不是几分钟。我知道这是一个简单的问题,但我无法弄清楚atm。

编辑:有兴趣的人的最终解决方案。感谢 Michael Brewer-Davis

 Period p = new Period(this.startDate, this.endDate);
long hours = p.getHours();
long minutes = p.getMinutes();

String format = String.format("%%0%dd", 2);

return Long.toString(hours) + ":" + String.format(format, minutes);

原文由 clang1234 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 829
2 个回答

以下是它如何与 Joda 时间 一起工作:

 DateTime startTime, endTime;
Period p = new Period(startTime, endTime);
int hours = p.getHours();
int minutes = p.getMinutes();

您可以使用 Joda 的格式化程序进行格式化,例如 PeriodFormat,但我建议使用 Java 的。有关详细信息,请参阅 此问题

编辑:小心使用此方法检查时间间隔。此功能不考虑天数。两次之间只有几个小时。 2022-07-20 11.00 和 2022-07-21 12.00 将返回 1 小时,而不是 25 小时

原文由 Michael Brewer-Davis 发布,翻译遵循 CC BY-SA 4.0 许可协议

这应该工作。

 long secs = (this.endDate.getTime() - this.startDate.getTime()) / 1000;
int hours = secs / 3600;
secs = secs % 3600;
int mins = secs / 60;
secs = secs % 60;

原文由 Rob Van Dam 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题