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