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

JavaのLocalDateクラスの使い方を完全ガイド!初心者でもわかる日付操作の基本

LocalDateクラス
LocalDateクラス

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

生徒

「Javaで今日の日付を取得したり、日付の計算をするにはどうすればいいですか?」

先生

「Javaにはjava.timeパッケージがあり、その中のLocalDateクラスを使うと簡単にできますよ。」

生徒

「なるほど!LocalDateって、どんなことができるんですか?」

先生

「それでは、LocalDateの基本的な使い方から順番に見ていきましょう。」

1. java.timeパッケージとLocalDateクラスとは

1. java.timeパッケージとLocalDateクラスとは
1. java.timeパッケージとLocalDateクラスとは

Javaのjava.timeパッケージは、Java SE 8から追加された「新しい日付と時刻の標準API」です。日付や時刻を安全に扱うために設計されており、コードを読む人にも意味が伝わりやすい書き方ができるのが特徴です。従来のjava.util.DateCalendarは、内部的にミリ秒の数値で管理していたり、月が0始まりだったりと、初心者には直感的に理解しづらい点が多く、思わぬバグの原因にもなりがちでした。

それに対してjava.timeパッケージでは、「日付だけ」「時刻だけ」「タイムゾーン付きの日時」など、用途ごとにクラスが分かれています。その中でもLocalDateクラスは、「年月日」だけを扱うためのクラスです。時刻(何時何分)やタイムゾーン(日本時間・アメリカ時間など)の情報は持ちません。イメージとしては、カレンダーに書いてある「2025年9月4日」のような日付そのものを表すだけの存在です。

LocalDateは、次のような「日付だけわかれば十分」という場面でよく使われます。

  • 生年月日・誕生日の管理
  • 入社日・契約開始日・締切日などのスケジュール
  • イベントの日付(開催日・終了日)の管理

また、LocalDateは「不変(イミュータブル)なオブジェクト」として作られているのもポイントです。一度作成したLocalDateの中身は変更されず、「1日後」や「1か月前」を求めるときは、元のオブジェクトを壊さずに、新しいLocalDateが返ってくる仕組みになっています。これにより、意図しない書き換えが起きにくく、初心者でも安心して日付を扱うことができます。

イメージしやすいように、LocalDateを使ったごく簡単なサンプルを見てみましょう。ここでは「今日の日付」をLocalDate型の変数に入れて、そのまま画面に表示するだけのシンプルな例です。


import java.time.LocalDate;

public class LocalDateIntro {
    public static void main(String[] args) {
        // LocalDate型の変数todayに、今日の日付を入れる
        LocalDate today = LocalDate.now();
        // LocalDateの中身をそのまま出力してみる
        System.out.println(today);
    }
}

このコードでは、LocalDateという「日付専用の型」を使って、今日の日付をtodayという変数に入れています。System.out.println(today);で表示される値は「2025-09-04」のような形式になり、「その日付を1日進める」「文字列として表示形式を変える」といった操作は、次の章以降で順番に学んでいきます。まずは、「java.timeパッケージには日付や時刻を扱うクラスがあり、その中でもLocalDateは年月日だけを表すクラスなんだ」というイメージを押さえておきましょう。

2. LocalDateで現在の日付を取得する方法

2. LocalDateで現在の日付を取得する方法
2. LocalDateで現在の日付を取得する方法

LocalDateを使えば、現在の日付(システム日付)を簡単に取得できます。以下がそのサンプルコードです。


import java.time.LocalDate;

public class TodayExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        System.out.println("今日の日付は: " + today);
    }
}

今日の日付は: 2025-09-04

LocalDate.now()を使うことで、現在の日付をLocalDate型で取得できます。

3. 特定の日付を作成するには?

3. 特定の日付を作成するには?
3. 特定の日付を作成するには?

日付を指定してLocalDateを作りたい場合は、ofメソッドを使います。


import java.time.LocalDate;

public class SpecificDateExample {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2025, 12, 25);
        System.out.println("指定した日付は: " + date);
    }
}

指定した日付は: 2025-12-25

of(int year, int month, int dayOfMonth)の形式で簡単に指定可能です。

4. 日付の加算・減算をする方法

4. 日付の加算・減算をする方法
4. 日付の加算・減算をする方法

LocalDateでは、日付の足し算や引き算も簡単にできます。


import java.time.LocalDate;

public class DateCalculationExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate nextWeek = today.plusDays(7);
        LocalDate lastMonth = today.minusMonths(1);
        System.out.println("1週間後: " + nextWeek);
        System.out.println("1か月前: " + lastMonth);
    }
}

1週間後: 2025-09-11
1か月前: 2025-08-04

plusDaysminusMonthsなどを使うことで、柔軟な日付操作ができます。

5. 文字列から日付へ変換(パース)する

5. 文字列から日付へ変換(パース)する
5. 文字列から日付へ変換(パース)する

文字列の日付(例:"2025-09-04")をLocalDateに変換したい場合はparseメソッドを使います。


import java.time.LocalDate;

public class ParseDateExample {
    public static void main(String[] args) {
        LocalDate date = LocalDate.parse("2025-09-04");
        System.out.println("パースした日付: " + date);
    }
}

パースした日付: 2025-09-04

ISO形式(yyyy-MM-dd)の文字列であれば、簡単に変換できます。

6. 日付を文字列に変換(フォーマット)する

6. 日付を文字列に変換(フォーマット)する
6. 日付を文字列に変換(フォーマット)する

LocalDateを文字列として表示したい場合は、DateTimeFormatterを使ってフォーマットできます。


import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class FormatDateExample {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        String formatted = date.format(formatter);
        System.out.println("フォーマットされた日付: " + formatted);
    }
}

フォーマットされた日付: 2025年09月04日

日本語形式の日付表記にしたいときにも便利ですね。

7. 日付の比較をする方法

7. 日付の比較をする方法
7. 日付の比較をする方法

LocalDateは日付の前後関係を簡単に比較できます。isBeforeisAfterなどのメソッドを使います。


import java.time.LocalDate;

public class CompareDateExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate future = LocalDate.of(2030, 1, 1);
        System.out.println("未来の日付は今日より後? " + future.isAfter(today));
        System.out.println("今日の日付は未来より前? " + today.isBefore(future));
    }
}

未来の日付は今日より後? true
今日の日付は未来より前? true

こうした比較は、スケジュール管理などにも役立ちます。

8. LocalDateとjava.timeパッケージの活用シーン

8. LocalDateとjava.timeパッケージの活用シーン
8. LocalDateとjava.timeパッケージの活用シーン

LocalDateは、以下のようなシーンでよく使われます:

  • スケジュール管理(締切や開始日)
  • 予約システム(チェックイン・チェックアウト日)
  • 生年月日などの登録
  • 日付間の差分計算

java.timeパッケージには、LocalDate以外にもLocalTimeLocalDateTimeZonedDateTimeなど、目的に応じたクラスが多数用意されています。

まずはLocalDateをマスターすることで、日付操作の基本をしっかり身につけられます。

まとめ

まとめ
まとめ

JavaにおけるLocalDateクラスの基本を一通り学んできて、日付に関する操作がとても直感的で使いやすいことがわかりました。とくに現在の日付の取得や、特定の日付の作成、日付の加算・減算、比較やフォーマットといった処理が、シンプルな記述でできるのがjava.timeパッケージの大きな魅力です。従来のjava.util.DateCalendarではコードが冗長になりがちでしたが、LocalDateを使うことで、より読みやすく、保守しやすいコードに仕上げることができます。

実際の開発現場では、日付の操作は避けて通れない場面が多くあります。たとえばスケジュール管理、予約システム、日付の比較による処理分岐など、さまざまなユースケースに対応できる柔軟性をLocalDateは持っています。また、DateTimeFormatterを使うことで、日本語の表記にも対応でき、ユーザーに見やすい形で日付を提供することも容易です。

日付のパース(文字列からの変換)や、フォーマット(文字列への変換)はとくに実務で使われる頻度が高く、ログ出力や画面表示などにも欠かせません。ISO形式のyyyy-MM-ddに加え、独自の形式にも柔軟に対応できる点も心強いです。また、isBeforeisAfterを使った比較処理により、現在より未来か過去かの判定も非常に簡単に行えます。

ここで、改めてLocalDateを使ったシンプルなサンプルコードで振り返ってみましょう。以下の例は、今日から30日後の日付を計算し、日本語形式で表示するものです。


import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class SummarySample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate future = today.plusDays(30);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        String formattedDate = future.format(formatter);
        System.out.println("30日後の日付は: " + formattedDate);
    }
}

30日後の日付は: 2025年10月04日

このように、JavaのLocalDateクラスを使えば、複雑に見える日付操作も驚くほど簡単に扱えます。日付を自在に操る力を身につけることは、Javaプログラマとしての大きな一歩です。LocalDateをしっかり理解し、業務に役立つ形で活用していくことが、今後の成長につながります。

先生と生徒の振り返り会話

生徒

「先生、LocalDateを使うと日付の操作がこんなに簡単にできるんですね!」

先生

「そうなんです。日付の取得、加算・減算、比較、フォーマットなど、現代的な書き方で扱えるのがjava.timeパッケージの魅力です。」

生徒

plusDaysとかformatの使い方もすぐ覚えられました!文字列から日付に変換できるparseも便利ですね。」

先生

「実務でもよく使う機能なので、覚えておくと非常に役立ちますよ。たとえば予約日と今日の日付を比較して、まだ先かどうかを判定したりもできます。」

生徒

「スケジュールアプリとか作るときに活かせそうですね!このクラスだけでもかなりのことができそうです。」

先生

「まさにその通り。最初はLocalDateから始めて、慣れてきたらLocalDateTimeZonedDateTimeなど、時間やタイムゾーンも含めた扱い方に進んでいくとよいでしょう。」

生徒

「ありがとうございます!これから日付操作のコードを書くのが楽しみになってきました。」

先生

「よい姿勢ですね。ぜひ自分でもいろいろ試して、実践的なコードをどんどん書いてみてください。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaで今日の日付を簡単に取得するにはどうすればいいですか?

Javaで現在の日付を取得するには、java.timeパッケージのLocalDateクラスを使います。LocalDate.now()メソッドを呼び出すだけで、システム上の今日の日付を簡単に取得できます。
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法