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

JavaのLocalDateTime.compareToメソッドを完全解説!初心者でもわかる日時比較の基本

LocalDateTimeのcompareToメソッド
LocalDateTimeのcompareToメソッド

教材紹介 Java学習のおすすめ教材

Javaの基礎を体系的に整理しながら学習したい方には、 資格対策としても定評のある定番教材が参考になります。

Javaプログラマ Silver SE 17 教科書をAmazonで見る

※ Amazon広告リンク

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

生徒

「先生、Javaで二つの日時を比較したいんですが、どんな方法がありますか?」

先生

「Javaではjava.timeパッケージのLocalDateTimeクラスにあるcompareToメソッドを使うことで、二つの日時を簡単に比較できるんだよ。」

生徒

「それは便利ですね!具体的にどうやって使うんですか?」

先生

「それじゃあ、実際のコードと一緒に基本から見ていこう。」

1. java.timeパッケージとは?

1. java.timeパッケージとは?
1. java.timeパッケージとは?

java.timeパッケージは、Java8以降で新しく導入された日時APIです。従来のDateCalendarの使いにくさを解消するために設計され、直感的で安全に日時を扱うことができます。国際化対応やタイムゾーン管理にも強力で、Webアプリや業務システムの開発に欠かせない仕組みとなっています。

2. LocalDateTimeクラスの役割

2. LocalDateTimeクラスの役割
2. LocalDateTimeクラスの役割

LocalDateTimeは日付と時刻を表現するクラスです。ただしタイムゾーンは含まれていません。そのため、「2025年9月23日 12時30分」という日時をそのまま扱うことができます。シンプルに日時を保持したい場合や、比較演算の基礎として利用するのに向いています。

3. compareToメソッドの基本

3. compareToメソッドの基本
3. compareToメソッドの基本

compareToメソッドは二つのLocalDateTimeオブジェクトを比較するために使われます。戻り値は整数で、以下のような意味を持ちます。

  • 負の値:呼び出し元の日時が引数より前の場合
  • ゼロ:両方の日時が同じ場合
  • 正の値:呼び出し元の日時が引数より後の場合

import java.time.LocalDateTime;

public class CompareToExample {
    public static void main(String[] args) {
        LocalDateTime dateTime1 = LocalDateTime.of(2025, 9, 23, 10, 0);
        LocalDateTime dateTime2 = LocalDateTime.of(2025, 9, 23, 15, 0);

        int result = dateTime1.compareTo(dateTime2);

        if (result < 0) {
            System.out.println("dateTime1はdateTime2より前です。");
        } else if (result == 0) {
            System.out.println("両方の日時は同じです。");
        } else {
            System.out.println("dateTime1はdateTime2より後です。");
        }
    }
}

dateTime1はdateTime2より前です。

Javaの基礎を最初から体系的に学びたい人には、 初心者向けで定評のある定番入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. compareToを使うメリット

4. compareToを使うメリット
4. compareToを使うメリット

日時比較を行う方法は他にもありますが、compareToはシンプルで読みやすいという大きな利点があります。特にソート処理で利用されることが多く、リストに格納した日時を昇順や降順に並べ替える際に便利です。JavaのコレクションAPIと組み合わせれば、実用的なプログラムを簡単に書くことができます。

5. ソートでの活用例

5. ソートでの活用例
5. ソートでの活用例

日時のリストをソートするときにcompareToは自動的に呼び出されます。例えば、スケジュールアプリでイベントを日付順に並べたいときに非常に役立ちます。


import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SortExample {
    public static void main(String[] args) {
        List<LocalDateTime> dateTimes = new ArrayList<>();
        dateTimes.add(LocalDateTime.of(2025, 9, 23, 15, 0));
        dateTimes.add(LocalDateTime.of(2025, 9, 23, 10, 0));
        dateTimes.add(LocalDateTime.of(2025, 9, 23, 12, 0));

        Collections.sort(dateTimes);

        for (LocalDateTime dt : dateTimes) {
            System.out.println(dt);
        }
    }
}

2025-09-23T10:00
2025-09-23T12:00
2025-09-23T15:00

6. equalsとの違い

6. equalsとの違い
6. equalsとの違い

equalsメソッドは「等しいかどうか」を判断するだけですが、compareToは「どちらが前か後か」まで含めて比較できます。そのため、日時の大小関係を調べたい場合にはcompareToを使うのが適切です。一方で、完全に一致しているかを確認したい場合にはequalsを使う方が分かりやすいです。

7. compareToとビジネスロジック

7. compareToとビジネスロジック
7. compareToとビジネスロジック

ビジネスシステムでは「予約が未来か過去かを判断する」「期限が切れているかを確認する」といった処理がよく出てきます。これらをシンプルに実装するにはcompareToが非常に便利です。たとえば「現在の日時と締切日時を比較して、まだ間に合うか確認する」といった場面で役立ちます。

8. 現在時刻と比較する例

8. 現在時刻と比較する例
8. 現在時刻と比較する例

最後に、現在の日時と指定した日時を比較する例を紹介します。これにより「期限が切れているかどうか」を判定する処理が簡単に書けます。


import java.time.LocalDateTime;

public class DeadlineExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime deadline = LocalDateTime.of(2025, 9, 30, 23, 59);

        if (now.compareTo(deadline) < 0) {
            System.out.println("まだ期限内です。");
        } else {
            System.out.println("期限を過ぎています。");
        }
    }
}

まだ期限内です。
カテゴリの一覧へ
新着記事
JavaのIndexOutOfBoundsExceptionを完全ガイド!初心者でも理解できる例外処理と回避方法
スッキリわかるJava入門 第4版|独学でもレッスンでも学べる完全ガイド
JavaのCookieクラスのgetCommentメソッドを解説!Servlet開発でクッキーの説明文を取得する方法
JavaのBufferedOutputStreamクラスのwriteメソッドを徹底解説!初心者でもわかるファイルへのバイナリ書き込み
人気記事
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
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.4
Java&Spring記事人気No4
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
No.5
Java&Spring記事人気No5
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.6
Java&Spring記事人気No6
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.7
Java&Spring記事人気No7
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス
No.8
Java&Spring記事人気No8
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク