Find Duration in Hours and Minutes Between Two Dates in Java
The following is a Java code to find duration in hours and minutes between two dates:
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DurationExample {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String startDateTimeStr = "2021-05-10 11:50:10";
LocalDateTime startDateTime = LocalDateTime.parse(startDateTimeStr, formatter);
String endDateTimeStr = "2021-05-10 13:54:45";
LocalDateTime endDateTime = LocalDateTime.parse(endDateTimeStr, formatter);
String duration = getDurationInHoursAndMinutesBetweenTwoDates(startDateTime, endDateTime);
System.out.println(duration);
}
public static final String getDurationInHoursAndMinutesBetweenTwoDates(
LocalDateTime startDateTime, LocalDateTime endDateTime) {
Duration duration = Duration.between(startDateTime, endDateTime);
StringBuilder builder = new StringBuilder();
if (duration.toMinutes() < 60) {
builder.append(duration.toMinutes() + " mins");
}
if (duration.toMinutes() >= 60) {
BigDecimal totalMins = new BigDecimal(duration.toMinutes());
BigDecimal minsInOneHour = new BigDecimal("60");
BigDecimal result = totalMins.divide(minsInOneHour, 2, RoundingMode.CEILING);
if (result.doubleValue() % 1 == 0) {
builder.append(result.intValue());
} else {
builder.append(result);
}
builder.append(" hrs");
}
return String.format("%s", builder);
}
}
Output:
2.07 hrs