ホームページ >Java >&#&チュートリアル >Java 8 は、2 つの LocalDateTime インスタンスの差を年、月、日、時、分で正確に計算するにはどうすればよいでしょうか?

Java 8 は、2 つの LocalDateTime インスタンスの差を年、月、日、時、分で正確に計算するにはどうすればよいでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 12:46:12160ブラウズ

How Can Java 8 Accurately Calculate the Difference Between Two LocalDateTime Instances in Years, Months, Days, Hours, and Minutes?

Java 8: 複数の単位での 2 つの LocalDateTime インスタンスの差の計算

さまざまな時間単位での 2 つの LocalDateTime インスタンスの差の計算課題。 1 つのアプローチは、Java 8 で導入された Period クラスと Duration クラスを利用することです。

初期実装の課題

提供されたコードは、Period (年、月、日を処理する) と期間 (時間、分、秒を管理する) です。ただし、計算にはいくつかの不一致があります。

  • getTime メソッドは、数か月後の時差を誤って計算します。
  • 特定の日付と時刻のペアについて報告される負の時刻値は、次の問題を示しています。負の差異の処理。

改善されました計算

正確な計算を保証するには、日付と時刻から特定の時間単位を抽出するメソッドを提供する ChronoUnit 列挙型の使用を検討してください。

import java.time.ChronoUnit;
import java.time.LocalDateTime;
import java.time.Period;

public class CalculateLocalDateTimeDifference {

    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.toLocalDate(), toDateTime.toLocalDate());
        long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime);
        long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);

        System.out.println(period.getYears() + " years " +
                period.getMonths() + " months " +
                period.getDays() + " days " +
                hours + " hours " +
                minutes + " minutes.");
    }
}

説明

  • Period.between は、指定された時点までの年、月、日の差を計算します。 .
  • ChronoUnit.MINUTES.between は時差を分単位で抽出します
  • 同様に、ChronoUnit.HOURS.between は時間の差を取得します。

この強化されたアルゴリズムは、正と負の両方の時間差について正確な結果を提供します。

以上がJava 8 は、2 つの LocalDateTime インスタンスの差を年、月、日、時、分で正確に計算するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。