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