【问题标题】:How to get time difference/duration in hour and minute along with in java?java - 如何在Java中获得小时和分钟的时差/持续时间?
【发布时间】:2019-07-03 15:53:11
【问题描述】:

在我的项目中,我需要从 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

然而,几乎所有的解决方案都是要么参数要么返回值是一个字符串。此外,仅返回小时或分钟。

【问题讨论】:

  • 两个日期之间的差异怎么会是一个日期呢?因此,您的方法 getDiffTime 不应返回 Date。
  • 是的,这是我如何返回值“hh:mm”格式的问题,它将被视为日期类型,而我们可以将日期格式化为“hh:mm”格式。 --@AmitBera
  • 只返回hh:mm格式的字符串
  • 我建议你不要使用Date。该课程设计不良且早已过时。而是使用来自java.time, the modern Java date and time APILocalTimeDuration

标签: java datetime java-time


【解决方案1】:

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

【讨论】:

  • 更简单:goTOvisitTime.toInstant()。新的转换方法被添加到旧的类中。
  • 在 Java 9 及更高版本中使用 toHoursParttoMinutesPart,而不是 toHourstoMinutes
猜你喜欢
  • 2013-11-24
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多