カテゴリ: Java 更新日: 2026/01/26

JavaのLocalDate.compareToの使い方を完全ガイド!初心者でもわかる日付比較

LocalDateのcompareToメソッド
LocalDateのcompareToメソッド

先生と生徒の会話形式で理解しよう

生徒

「先生、Javaで2つの日付が同じかどうか比べるにはどうすればいいんですか?」

先生

「それならLocalDateクラスのcompareToメソッドを使うのが基本ですよ。」

生徒

equalsとは違うんですか?どっちを使えばいいのか迷います…」

先生

「良いポイントですね。equalsは完全一致、compareToは前後関係も含めて比較できるんです。順番に解説していきましょう!」

1. java.timeパッケージとLocalDateの基本

「1. java.timeパッケージとLocalDateの基本」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. java.timeパッケージとLocalDateの基本
1. java.timeパッケージとLocalDateの基本

Javaでは、日付や時間を扱うためにjava.timeパッケージが用意されています。特にLocalDateクラスは、年・月・日を表す日付専用のクラスです。時間情報は含まず、スケジュール管理や日付の比較に適しています。

このLocalDateクラスは、Java SE 8から導入されたjava.timeパッケージに含まれており、従来のDateCalendarクラスに比べて、シンプルで使いやすく、安全に扱えるのが特徴です。

2. LocalDate.compareToメソッドとは?

2. LocalDate.compareToメソッドとは?
2. LocalDate.compareToメソッドとは?

compareToメソッドは、2つのLocalDateオブジェクトを比較して、どちらが先か、同じか、後かを判定するメソッドです。戻り値はint型で、次のような値になります:

  • 0:同じ日付
  • 負の数:呼び出し元の日付が引数より前
  • 正の数:呼び出し元の日付が引数より後

このメソッドは、ソート処理や日付の前後比較に非常に便利です。

3. compareToメソッドの基本的な使い方

3. compareToメソッドの基本的な使い方
3. compareToメソッドの基本的な使い方

まずは、compareToの基本的な使い方を確認しましょう。以下のコードは、2つの日付を比較して、その結果を出力する例です。


import java.time.LocalDate;

public class CompareDateExample {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2025, 9, 4);
        LocalDate date2 = LocalDate.of(2025, 9, 10);

        int result = date1.compareTo(date2);
        System.out.println("比較結果: " + result);
    }
}

比較結果: -6

この例では、date1date2より6日前の日付なので、-6が返されます。

4. 条件分岐に使うパターン

「4. 条件分岐に使うパターン」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. 条件分岐に使うパターン
4. 条件分岐に使うパターン

compareToの戻り値を使えば、「ある日付が過去か未来か」を判断する処理が簡単に書けます。以下は、if文と組み合わせた例です。


import java.time.LocalDate;

public class DateConditionExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate deadline = LocalDate.of(2025, 9, 30);

        if (today.compareTo(deadline) > 0) {
            System.out.println("締切を過ぎています。");
        } else if (today.compareTo(deadline) == 0) {
            System.out.println("今日が締切日です。");
        } else {
            System.out.println("まだ締切前です。");
        }
    }
}

5. equalsとの違いと使い分け

5. equalsとの違いと使い分け
5. equalsとの違いと使い分け

初心者が混乱しやすいのが、equalscompareToの違いです。どちらも「日付の比較」に使えますが、用途が異なります。

  • equals:完全に同じ日付かどうか(論理的な等価)
  • compareTo:前後関係や順序も判定できる(ソートに便利)

「この2つの日付が同じかどうか」だけを見たいならequalsを使うのが適切です。一方で、日付の前後を知りたい、または並び替えたいときはcompareToが便利です。

6. ソート処理での活用例

6. ソート処理での活用例
6. ソート処理での活用例

compareToは、LocalDateListで並び替えるときにも役立ちます。JavaのCollections.sortStream.sortedなどと組み合わせて使えます。


import java.time.LocalDate;
import java.util.*;

public class SortDatesExample {
    public static void main(String[] args) {
        List<LocalDate> dates = new ArrayList<>();
        dates.add(LocalDate.of(2025, 12, 1));
        dates.add(LocalDate.of(2025, 1, 10));
        dates.add(LocalDate.of(2025, 6, 5));

        Collections.sort(dates);

        for (LocalDate date : dates) {
            System.out.println(date);
        }
    }
}

2025-01-10
2025-06-05
2025-12-01

7. compareToを使う際の注意点

「7. compareToを使う際の注意点」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. compareToを使う際の注意点
7. compareToを使う際の注意点

compareToを使う際の注意点として、nullとの比較は絶対に避けるようにしましょう。nullLocalDateオブジェクトに対してcompareToを実行すると、NullPointerExceptionが発生します。

安全に扱うためには、事前にnullチェックを行うことが重要です。

8. compareToをマスターして日付処理を効率化しよう

8. compareToをマスターして日付処理を効率化しよう
8. compareToをマスターして日付処理を効率化しよう

compareToメソッドを使いこなすことで、Javaにおける日付の前後関係の判定や、リストの並び替え、条件分岐などがスムーズに書けるようになります。

LocalDatecompareToはセットで覚えておくと非常に便利です。特に、日付に関する処理が多い業務アプリケーションやスケジュール管理システムでは頻繁に使われるメソッドです。

初心者の方も、この記事を参考にcompareToの使い方をしっかり身につけて、実践で活かしていきましょう!

カテゴリの一覧へ
新着記事
New1
Java
JavaのStreamのreduceを完全解説!初心者でもわかる集約処理の基本
新規投稿
New2
Spring
Javaの@withinアノテーションを初心者向けに解説!Spring AOPでの使い方を完全ガイド
更新記事
New3
Spring
Springの@AfterThrowingアノテーションの使い方を完全ガイド!初心者でもわかる例外処理
更新記事
New4
Spring
Javaの@AfterReturningアノテーションの使い方を完全ガイド!初心者でもわかるAOP入門
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Thymeleaf
Thymeleafのth:checkedの使い方!チェックボックスON/OFFを動的に制御する方法
No.3
Java&Spring記事人気No3
Thymeleaf
Thymeleaf(タイムリーフ)の使い方入門!初心者でもわかるth:textの基礎
No.4
Java&Spring記事人気No4
Java
Javaの抽象クラス(abstract)を完全ガイド!継承と設計のルールを学ぶ
No.5
Java&Spring記事人気No5
Spring
Spring BootのMultipartFile入門:ファイルアップロード・ダウンロードの実装方法と制限設定
No.6
Java&Spring記事人気No6
Spring
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.7
Java&Spring記事人気No7
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.8
Java&Spring記事人気No8
Thymeleaf
Thymeleafのth:blockの使い方を完全ガイド!初心者でもわかるテンプレートブロック管理