在我的项目,我需要找到从goToVisitTime和returnTime雇员的上班时间飘在外线的持续时间。主要关于点是goToVisitTime和returnTime都是日期(java.util中)类型[从其他方法获得,不能再改变]和styingOutSideTime也必须是日期(java.util中)型。例如:
Date goTOvisitTime = "12:25";
Date returnTime = "14:19";
因此,输出应该是这样的,
styingOutSideTime = "01:54";
因此,我的方法看起来象下面这样:
public Date getDiffTime(Date goTOvisitTime, Date returnTime) {
//calculate difference
return styingOutSideTime;
}
我已经花了很多时间来确定解决方案。我试图用几乎所有的从Java和乔达时间日期和时间为好。此外,我通过以下链接去
How to calculate time difference in java?
Java how to calculate time differences
Convert seconds value to hours minutes seconds?
How to get hour/minute difference in java
然而,几乎所有的解决方案,或者是参数或返回值是一个字符串。另外,返回任一小时或分钟只。
首先,持续时间不应该是一个Date
,它应该是一个java.time.Duration
。
如果你只想小时部分和分部分,你可以做这样的:
Duration duration = Duration.between(goTOvisitTime.toInstant(), returnTime.toInstant());
int hours = duration.toHoursPart();
int minutes = duration.toMinutesPart();
String formattedDuration = String.format("%02d:%02d", hours, minutes);