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

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

Linda Hamilton
發布: 2024-12-06 05:28:14
原創
544 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板