首頁 >Java >java教程 >Java中如何精確計算兩個LocalDateTime物件之間的時間差?

Java中如何精確計算兩個LocalDateTime物件之間的時間差?

DDD
DDD原創
2024-12-10 13:10:15456瀏覽

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