如何在Java中获得以小时和分钟为单位的时差/持续时间?

时间:2019-02-09 17:34:23

标签: java datetime java-time

在我的项目中,我需要从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和Joda Time的几乎所有日期和时间。此外,我通过以下链接

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

但是,几乎所有解决方案都是参数,或者返回值是字符串。此外,仅返回小时或分钟。

1 个答案:

答案 0 :(得分:2)

首先,持续时间不应为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);