Java 8:決定兩個LocalDate 之間的時間差異
計算兩個LocalDateTime 物件之間的差異,以年、月、日、小時表示、分鐘和秒可能是一項複雜的任務。一種方法是利用 Java 8 中引入的 period 和 Duration 類別。但是,如果差異涉及負值(如程式碼所示),則可能會導致不正確的結果。
問題
您的程式碼計算兩個日期之間的時間段,代表年、月和日。然後,它計算以秒為單位的時間差,並將這些秒轉換為小時、分鐘和秒。但是,它沒有考慮當「開始」日期大於「結束」日期時可能出現的負值。
解決方案
要解決這個問題,我們可以使用 ChronoUnit 列舉直接確定時間差。 ChronoUnit 提供了一種計算兩個 LocalDateTime 物件之間的時間單位(例如分鐘和小時)的便捷方法。
以下是使用 ChronoUnit 的更新程式碼:
import java.time.ChronoUnit; import java.time.LocalDateTime; public class Main { 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); long years = ChronoUnit.YEARS.between(fromDateTime, toDateTime); long months = ChronoUnit.MONTHS.between(fromDateTime, toDateTime); long days = ChronoUnit.DAYS.between(fromDateTime, toDateTime); long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime); long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime); long seconds = ChronoUnit.SECONDS.between(fromDateTime, toDateTime); System.out.println(years + " years " + months + " months " + days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds."); } }
經過此修改,您的程式碼應該準確計算兩個 LocalDateTime 物件之間的時間差。
以上是Java 8 如何準確計算兩個 LocalDate 之間的時間差異並處理負值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!