首頁 >Java >java教程 >如何精確計算兩個 Java 8 LocalDateTime 實例之間的時間差?

如何精確計算兩個 Java 8 LocalDateTime 實例之間的時間差?

Linda Hamilton
Linda Hamilton原創
2024-12-06 05:28:14547瀏覽

How to Accurately Calculate Time Differences Between Two Java 8 LocalDateTime Instances?

Java 8:決定兩個LocalDateTime 實例之間的時差

在Java 8 中,LocalDateTime 類別表示沒有時區的日期和時間。要計算兩個 LocalDateTime 實例之間的差異,可以使用 period 和 Duration 類別。但是,您的程式碼在月份值之後產生了錯誤的結果。

原始實作中的程式碼不正確:

問題出在getTime() 方法中,特別是在小時、分鐘和秒的計算:

Duration duration = Duration.between(today, now);

long seconds = duration.getSeconds();

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

這種方法是不正確的,因為它假設持續時間總是為正。當 fromDateTime 大於 toDateTime 時,它無法處理遇到的負值。

使用ChronoUnit 的替代方法:

精確計算LocalDateTime 實例之間的差異,包括負值的情況值,最好使用ChronoUnit enum:

long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime);
long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);

ChronoUnit提供了計算各種時間單位(例如年、月、日、時、分、秒)差異的方法。它可以正確處理正值和負值。

透過利用 ChronoUnit,您的程式碼將為所有場景提供準確的結果。

以上是如何精確計算兩個 Java 8 LocalDateTime 實例之間的時間差?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn