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

2022-08-31 22:16:08

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

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

我尝试了以下方法:

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

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

编辑:为那些感兴趣的人提供最终解决方案。感谢迈克尔·布鲁尔-戴维斯

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);

答案 1

这应该有效。

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

答案 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 小时


推荐