PR

【Java】LocalDateとは?日付処理の基本を初心者向けに解説

unDrawのCalendarイラストを使いLocalDateの日付処理を表すアイキャッチ画像 Java

LocalDateは、時刻やタイムゾーンを含まず、年・月・日だけを扱う日付クラスです。

実務では、申込日、締切日、誕生日、営業日など『日付だけ』を扱う場面がよくあります。Javaでは、その入口としてjava.time.LocalDateを使うのが自然です。

まずは『LocalDateは日付だけ。時刻は持たない』と分けて覚えると、日時処理で迷いにくくなります。

この記事では、LocalDateの意味、既存記事との違い、コードの読み方、初心者がつまずきやすい点を順番に整理します。

スポンサーリンク

まず結論:LocalDateは日付だけを扱う

LocalDateは、年・月・日だけを表す不変のクラスです。時刻が必要な場合はLocalDateTime、タイムゾーンが必要な場合はZonedDateTimeなど、別のクラスを検討します。

次の図では、文字列、LocalDate、表示用文字列の違いを見てください。

LocalDateを時刻のないカレンダーカードとして表すイメージ
LocalDateは、年・月・日だけを扱うクラスで、時刻やタイムゾーンは持ちません。

日付そのものと表示形式を分けると、parseやformatの役割が分かりやすくなります。

Dateや文字列との違い

比較文字列LocalDate
意味見た目の文字日付として計算できる値
加算自力で処理しにくいplusDaysなどを使える
比較文字として比較になりがち日付として比較できる
時刻含めることもある持たない

Javaの標準クラス全体の入口はJavaクラスライブラリで扱っています。LocalDateは、その中でも実務で頻出する日付処理の入り口です。

まずはこのコードを読めればOK

LocalDateでは、今日、指定日、文字列からの日付を次のように扱います。

import java.time.LocalDate;

LocalDate today = LocalDate.now();
LocalDate releaseDate = LocalDate.of(2026, 5, 15);
LocalDate parsed = LocalDate.parse("2026-05-15");

System.out.println(today);
System.out.println(releaseDate.plusDays(7));

LocalDate.ofは年・月・日を指定して作ります。parseは標準的なyyyy-MM-dd形式の文字列をLocalDateに変換します。

parse・format・plusDaysの流れ

次の図では、parse、plusDays、formatの役割を順番に確認してください。

文字列をparseしてLocalDateにしformatで表示文字列に戻す日付処理のイメージ
LocalDateでは、文字列から日付へ変換し、必要なら表示用に文字列へ戻します。

この3つを分けるだけで、日付処理のコードはかなり読みやすくなります。

LocalDateは不変です。plusDaysを呼んでも元の日付が変わるのではなく、新しいLocalDateが返ります。この点はStringの不変性とも似ています。

初心者がつまずきやすいポイント

つまずきまずこう読む
LocalDateに時刻があると思うLocalDateは日付だけ
文字列のまま日付計算しようとするLocalDateに変換してから扱う
plusDaysで元の値が変わると思う新しい値が返る
表示形式と日付そのものを混同するformatは表示用の文字列変換

最後の図では、LocalDateで混同しやすい3点を確認してください。

LocalDateのplusDaysが元の日付を変えず新しい日付を返すことを示す図
LocalDateは不変なので、plusDaysは元の日付を変更せず、新しいLocalDateを返します。

この3点を押さえると、Dateや文字列との違いも説明しやすくなります。

LocalDateを使う場面

  • 申込日や締切日の管理
  • 誕生日や記念日の保持
  • 日付の加算や比較
  • 文字列で受け取った日付の変換

日付処理は、文字列の見た目と日付としての値を分けて考えると安定します。計算や比較をするなら、まずLocalDateへ変換するのが基本です。

次の図では、必要な情報によってどの日付クラスを選ぶかを確認してください。

日付だけならLocalDate、時刻も必要ならLocalDateTime、タイムゾーンも必要ならZonedDateTimeを選ぶイメージ
日付だけならLocalDate、時刻も必要ならLocalDateTime、タイムゾーンも必要ならZonedDateTimeを検討します。

LocalDateは便利ですが、時刻やタイムゾーンが必要な場面まで無理に担当させないことが大切です。

実務コードで読むときのコツ

実務コードでLocalDateが出てきたら、最初に見るべきなのは『何を扱うために使っているのか』です。クラス名やメソッド名だけを暗記するより、データの目的を日本語に直す方が理解しやすくなります。

次に、変数の型、呼び出しているメソッド、戻り値の3つを順番に確認します。型を見ると入れ物の性質が分かり、メソッドを見ると何をしたいのかが分かり、戻り値を見ると次の処理へどうつながるかが分かります。

この記事の範囲では、LocalDateを完全に使いこなすことよりも、初見のコードで立ち止まらないことを優先しています。細かい仕様は公式APIで確認しながら、まずは代表的な使い方を読める状態を作りましょう。

チーム開発では、同じ機能を別の書き方で実現できる場合もあります。そのため『この書き方だけが正解』と覚えるのではなく、なぜその場面でそのクラスや構文が選ばれているのかを考えるのが大切です。

もう1つ大事なのは、サンプルコードと実務コードでは情報量が違うという点です。実務コードでは、変数名、メソッド名、例外処理、戻り値の受け渡しが同時に出てきます。読み始めで混乱したら、まずこのページで扱った最小コードまで戻し、1行ずつ役割を書き出すと整理できます。

特にLocalDateのような基礎概念は、単独で覚えるより、既存記事の文法やクラスライブラリとつなげて読む方が定着します。『どの前提知識が使われているか』を確認する癖をつけると、初めて見るAPIや構文にも対応しやすくなります。

判断に迷ったときの基準

LocalDateを使うべきか迷ったときは、先に目的を言葉にしてみます。目的が言葉で説明できないままコードを書き始めると、似たクラスや似た構文との違いが見えなくなります。

確認すること見るポイント
扱いたいデータ値、一覧、例外、日付など何を扱うのか
必要な操作追加、比較、変換、確認、表示など何をしたいのか
既存記事との関係基礎文法、クラス、コレクション、例外処理のどれにつながるか
注意点順番、null、例外、戻り値、不変性など見落としやすい点

この4点を先に確認すると、単なる暗記ではなく、コードを読むための判断軸ができます。初心者向けの記事でも、この判断軸まで持てると、次の応用記事へ進みやすくなります。

練習問題

理解を確認するために、次の観点でサンプルコードを自分で説明してみてください。実行できる環境がある場合は、少し値を変えて結果がどう変わるかも試すと定着しやすくなります。

  • LocalDateは何を扱うために使われているか説明する
  • コードの中で一番重要なメソッドを1つ選び、役割を説明する
  • 既存記事で学んだ概念とどこがつながるか説明する
  • 初心者が間違えやすいポイントを1つ挙げ、回避方法を書く

練習では、正確な用語を最初から完璧に使う必要はありません。まずは『何を入れて、何を取り出し、どの条件で動きが変わるのか』を自分の言葉で言えることを目標にしてください。

よくある疑問

最初から細かい仕様まで覚えるべき?

最初からすべてのメソッドや内部仕様を暗記する必要はありません。初心者の段階では、代表的な使い方、よくあるつまずき、既存記事とのつながりを押さえれば十分です。必要になったタイミングで公式APIを確認する習慣を作りましょう。

既存記事とは何が違う?

Javaクラスライブラリ記事から実務頻出の日付処理へ進むための欠落記事。

次に何を読めばよい?

次に読む記事は、本文末尾の内部リンクから選ぶのがおすすめです。基礎概念が不安なら親記事へ戻り、コードの応用を見たい場合は関連する文法やライブラリの記事へ進むと理解がつながります。

既存記事とあわせて読む順番

クラスライブラリ、String、LocalDate、例外処理の順に読むと、入力文字列を日付へ変換し、失敗時に処理する流れまで自然につながります。

公式情報と関連して読みたい記事

まとめ

LocalDateは、年・月・日だけを扱うためのJavaの日付クラスです。

  • LocalDateは日付だけを扱う
  • 時刻やタイムゾーンは持たない
  • parseで文字列から変換できる
  • plusDaysなどは新しいLocalDateを返す

LocalDateを使えるようになると、文字列だけで扱っていた日付を、計算や比較できる値として扱えるようになります。

タイトルとURLをコピーしました