カテゴリ: Java 更新日: 2026/01/26
PR
独学でJavaを学んでいる方向け
「実務レベルに到達できるか不安」「1人だと詰まることが多い」場合は、 実践重視で学べる環境を一度確認しておくのも一つの手です。
EBAエデュケーション |学習内容・サポートを見る

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の基本

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:同じ日付
  • 負の数:呼び出し元の日付が引数より前
  • 正の数:呼び出し元の日付が引数より後

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

PR

将来を見据えて、+αのスキルを身につけたい方へ

JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。

AIを学ぶならアイデミープレミアム

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. 条件分岐に使うパターン

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を使う際の注意点

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

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

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

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

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

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

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

Java Silver SE17(1Z0-825)の演習量を重視したい人には、 定番の問題集がこちらです。

徹底攻略 Java SE 17 Silver 問題集をAmazonで見る

※ Amazonアソシエイト・プログラムを利用しています

カテゴリの一覧へ
新着記事
PR

JavaやLinuxの検証環境に
低コストで使えるVPS

Javaのsealedクラス(シール・クラス)とは?継承を制御する新機能をやさしく解説
JavaのEnumとcompareToメソッドを完全ガイド!初心者でもわかるjava.langパッケージの基礎
JavaのLocalDateとequalsメソッドを完全解説!初心者でもわかる日付の比較方法
Springの@Afterアノテーションの使い方を完全ガイド!初心者でもわかるAOP入門
PR 未経験からITエンジニアを目指す方へ

Javaを学んでいるけど、「このまま未経験で就職できるか不安」という20代向け。 学歴不問・無料サポートの就職支援という選択肢があります。

Tamesy |無料で面談予約
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.3
Java&Spring記事人気No3
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得
No.4
Java&Spring記事人気No4
JavaのEnumクラスのordinalメソッドを徹底解説!初心者でもわかる列挙型の順序番号
No.5
Java&Spring記事人気No5
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.6
Java&Spring記事人気No6
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.7
Java&Spring記事人気No7
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
No.8
Java&Spring記事人気No8
Spring BootのMultipartFile入門:ファイルアップロード・ダウンロードの実装方法と制限設定
PR

ローカルPCに依存しない開発環境という選択肢

Java・Linuxの検証や学習環境を、クラウド上ですぐに用意できます。

Java入門

Javaの基礎を体系的に学びたい場合は、文法だけでなく 「なぜそう書くのか」まで丁寧に解説されているため、 初心者でも理解しやすい定番の1冊です。

スッキリわかるJava入門 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Java実践

ジェネリクス、enum、シールクラスなどの型設計から、 関数型プログラミング(ラムダ式・Stream API)、 JVM制御やリフレクション、外部ライブラリの活用までを扱っており、 「Javaを使えるレベル」へ進むための内容が網羅されています。

スッキリわかるJava入門 実践編 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Spring入門

Spring Frameworkの全体像から、 Webアプリ開発で必要となる主要機能までを 体系的に解説している定番の入門書です。

Spring徹底入門 第2版 Spring FrameworkによるJavaアプリケーション開発

※ 紙の書籍・電子書籍どちらでも購入できます

PR 実務経験のあるエンジニア向け

Javaなどの実務経験があり、次のキャリアを検討している方向け。 IT・ゲーム業界に特化した転職支援サービスという選択肢もあります。

転職ボックス |IT・ゲーム業界専門