Java 8: 2 つの LocalDates 間の時間的差異の決定
年、月、日、時間で表される 2 つの LocalDateTime オブジェクト間の差異の計算、分、秒を計算するのは複雑なタスクになる可能性があります。 1 つのアプローチは、Java 8 で導入された Period クラスと Duration クラスを利用することです。ただし、コードが示すように、差異に負の値が含まれる場合、不正確な結果が生じる可能性があります。
問題
コードは、年、月、日を表す 2 つの日付の間の期間を計算します。次に、時差を秒単位で計算し、これらの秒を時、分、秒に変換します。ただし、「開始」日付が「終了」日付より大きい場合に発生する可能性のある負の値は考慮されていません。
解決策
対処方法この問題では、ChronoUnit 列挙型を使用して時差を直接決定できます。 ChronoUnit は、2 つの 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."); } }
この変更により、コードは次のようになります。 2 つの LocalDateTime オブジェクト間の時間的な差を正確に計算します。
以上がJava 8 は、負の値を処理しながら、2 つの LocalDate 間の時間差をどのように正確に計算できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。