>Java >java지도 시간 >Java에서 두 LocalDateTime 개체 간의 시간 차이를 정확하게 계산하는 방법은 무엇입니까?

Java에서 두 LocalDateTime 개체 간의 시간 차이를 정확하게 계산하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-10 13:10:15451검색

How to Accurately Calculate the Time Difference Between Two LocalDateTime Objects in Java?

LocalDateTime 개체 간의 시간 차이 계산

문제를 해결하려면 두 LocalDateTime 개체 간의 시간 차이를 계산하는 포괄적인 접근 방식이 필요합니다. 여러 단위로 시간 범위를 나타냅니다.

Java 8 API는 처리할 Period 및 Duration 클래스를 제공합니다. 이것을 효과적으로. Period는 연, 월, 일 단위의 시간 간격을 나타내고 Duration은 시, 분, 초를 나타냅니다.

기존 코드에서는 Period와 Duration을 활용하여 시간 차이를 결정하지만 약간의 수정이 있습니다. 필수의. 업데이트된 코드는 다음과 같습니다.

import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.ZoneId;

public class Main {

    static final int MINUTES_PER_HOUR = 60;
    static final int SECONDS_PER_MINUTE = 60;
    static final int SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR;

    public static void main(String[] args) {
        LocalDateTime toDateTime = LocalDateTime.of(2014, 9, 9, 19, 46, 45);
        LocalDateTime fromDateTime = LocalDateTime.of(1984, 12, 16, 7, 45, 55);

        Period period = Period.between(fromDateTime, toDateTime);

        long seconds = Duration.between(fromDateTime, toDateTime).getSeconds();

        long hours = seconds / SECONDS_PER_HOUR;
        long minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE);
        long secs = (seconds % SECONDS_PER_MINUTE);

        System.out.println(period.getYears() + " years " + 
                period.getMonths() + " months " + 
                period.getDays() + " days " +
                hours + " hours " +
                minutes + " minutes " +
                secs + " seconds.");
    }
}

여기서 중요한 변경 사항은 Duration.between(fromDateTime, toDateTime).getSeconds();를 사용하는 것입니다. 초 차이를 계산합니다. 이렇게 하면 자정을 넘거나 음수 값이 있는 시간 범위를 처리할 때 정확도가 보장됩니다.

음수가 포함된 경우 Duration은 이를 올바르게 처리하여 시간 차이를 음수 값으로 제공합니다. 또한 특정 단위 변환에 ChronoUnit을 사용하는 것은 안정적인 접근 방식입니다.

위 내용은 Java에서 두 LocalDateTime 개체 간의 시간 차이를 정확하게 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.