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

JavaのLocalDate.plusメソッドの使い方を完全ガイド!初心者でもわかる日付の加算方法

LocalDateのplusメソッド
LocalDateのplusメソッド

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

生徒

「Javaで日付を簡単に1日や1ヶ月だけ加算したい場合、どうすれば良いですか?」

先生

「その場合は、java.timeパッケージのLocalDateクラスを使うのがおすすめです。特にplusメソッドが便利ですよ。」

生徒

「そのplusメソッドって、どうやって使うんですか?」

先生

「それでは、JavaのLocalDateクラスとplusメソッドの基本的な使い方を一緒に見ていきましょう。」

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

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

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

Javaのjava.timeパッケージは、Java8以降で導入された新しい日付と時刻のAPIです。従来のjava.util.DateCalendarに代わって、より直感的で扱いやすい日付処理ができるようになりました。

このパッケージには、LocalDateLocalTimeLocalDateTimeなど、日付や時刻を扱うためのクラスが豊富に用意されています。

2. LocalDateクラスとは?

2. LocalDateクラスとは?
2. LocalDateクラスとは?

LocalDateクラスは、日付(年・月・日)を表すためのクラスです。時刻情報は含まれておらず、タイムゾーンも考慮されないシンプルな日付型です。

例えば、今日の日付を取得したり、未来の日付や過去の日付を計算するのに非常に便利です。Javaの日付操作を行うなら、まず覚えておきたい基本クラスのひとつです。

3. plusメソッドの使い方

3. plusメソッドの使い方
3. plusメソッドの使い方

LocalDateクラスのplusメソッドは、日付に対して「日数」「月数」「年数」などを加算するために使います。

使い方としては、以下のように「何を」「どれくらい」加えるかを指定することで、新しい日付を取得できます。元の日付オブジェクトは変更されず、新しいLocalDateオブジェクトが返されます。


import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class LocalDatePlusExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS);
        LocalDate nextMonth = today.plus(1, ChronoUnit.MONTHS);
        LocalDate nextYear = today.plus(1, ChronoUnit.YEARS);

        System.out.println("今日: " + today);
        System.out.println("明日: " + tomorrow);
        System.out.println("来月: " + nextMonth);
        System.out.println("来年: " + nextYear);
    }
}

今日: 2025-09-04
明日: 2025-09-05
来月: 2025-10-04
来年: 2026-09-04

ChronoUnitは加算単位を表す列挙型で、日(DAYS)、月(MONTHS)、年(YEARS)などを指定できます。

4. よく使うChronoUnitの種類

「4. よく使うChronoUnitの種類」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. よく使うChronoUnitの種類
4. よく使うChronoUnitの種類

JavaのLocalDateクラスとplusメソッドを使う際によく使う単位は以下のとおりです。

  • ChronoUnit.DAYS:日単位で加算
  • ChronoUnit.WEEKS:週単位で加算
  • ChronoUnit.MONTHS:月単位で加算
  • ChronoUnit.YEARS:年単位で加算

例えば、1週間後の日付を取得したい場合は以下のように書けます。


LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);

5. 複数の期間を連続で加算する方法

5. 複数の期間を連続で加算する方法
5. 複数の期間を連続で加算する方法

LocalDateでは、複数の期間を連続で加算することもできます。たとえば「3日後の2ヶ月後」を求めたい場合、plusメソッドをチェーンして書けます。


LocalDate future = today.plus(3, ChronoUnit.DAYS).plus(2, ChronoUnit.MONTHS);

こうすることで、柔軟に日付を操作できます。特にスケジュール管理アプリや予約システムなどで便利です。

6. plusDays・plusMonths・plusYearsとの違い

6. plusDays・plusMonths・plusYearsとの違い
6. plusDays・plusMonths・plusYearsとの違い

LocalDateクラスには、plusの他にも、plusDaysplusMonthsplusYearsといった便利なメソッドが用意されています。

これらはそれぞれ、ChronoUnit.DAYSChronoUnit.MONTHSChronoUnit.YEARSを指定するplusと同じ結果を返しますが、よりシンプルに書けるのが特徴です。


LocalDate tomorrow = today.plusDays(1);
LocalDate nextMonth = today.plusMonths(1);
LocalDate nextYear = today.plusYears(1);

7. plusメソッドの注意点

「7. plusメソッドの注意点」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. plusメソッドの注意点
7. plusメソッドの注意点

plusメソッドは、元のLocalDateインスタンスを変更しない点に注意しましょう。日付の加算結果は新しいオブジェクトとして返されます。そのため、元の日付と混同しないように変数にきちんと代入して扱うのがポイントです。

また、加算単位として無効なものを指定すると例外が発生するため、ChronoUnit列挙型の正しい定数を使いましょう。

8. java.timeと旧APIの違い

8. java.timeと旧APIの違い
8. java.timeと旧APIの違い

Java8以前はjava.util.DateCalendarを使って日付操作をしていましたが、わかりづらくバグの原因になりやすいものでした。java.timeパッケージでは、こうした問題点が改善され、より安全で読みやすいコードが書けるようになっています。

これからJavaを学ぶ方や、実務で日付操作を行いたい方は、ぜひjava.time.LocalDateplusメソッドをマスターしましょう。

まとめ

まとめ
まとめ

LocalDateとplusメソッドの基本を振り返ろう

Javaで日付を扱うときに便利なのが、java.timeパッケージに用意されているLocalDateクラスです。LocalDateは年月日だけを扱うクラスで、時刻やタイムゾーンを含まないため、予約日、締切日、出荷日、登録日、誕生日、営業日などの日付管理に向いています。今回学習したplusメソッドは、このLocalDateの日付に対して、日数、週数、月数、年数などを加算できる便利なメソッドです。

Java初心者が日付計算を学ぶとき、今日から一日後、今日から一週間後、今日から一か月後、今日から一年後のような処理はよく登場します。従来のDateやCalendarを使うと書き方が複雑になりがちでしたが、Java8以降のjava.timeパッケージでは、LocalDateとplusメソッドを使うことで、読みやすく安全な日付操作ができます。

plusメソッドでは、加算する数値とChronoUnitの単位を指定します。たとえば、一日後ならChronoUnit.DAYS、一週間後ならChronoUnit.WEEKS、一か月後ならChronoUnit.MONTHS、一年後ならChronoUnit.YEARSを指定します。何をどれだけ加えるのかがコード上で分かりやすいため、日付計算の意図を読み取りやすいのが大きなメリットです。

plusメソッドは元の日付を変更しない

LocalDateのplusメソッドで特に重要なのは、元の日付オブジェクトを変更しないという点です。plusメソッドは、加算後の新しいLocalDateオブジェクトを返します。そのため、計算結果を利用したい場合は、戻り値を別の変数に代入する必要があります。これはJavaの日付処理で初心者がつまずきやすいポイントです。

たとえば、今日の日付に一日を加算したとしても、元のtodayという変数そのものが自動的に明日へ変わるわけではありません。明日の日付を使いたい場合は、tomorrowのような別の変数に結果を受け取ります。この仕組みにより、元の日付を残したまま、未来の日付や別の計算結果を安全に扱えます。


import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class LocalDatePlusSummary {
    public static void main(String[] args) {

        LocalDate today = LocalDate.of(2025, 9, 4);
        LocalDate afterTenDays = today.plus(10, ChronoUnit.DAYS);
        LocalDate afterTwoMonths = today.plus(2, ChronoUnit.MONTHS);

        System.out.println("基準日: " + today);
        System.out.println("十日後: " + afterTenDays);
        System.out.println("二か月後: " + afterTwoMonths);
    }
}

基準日: 2025-09-04
十日後: 2025-09-14
二か月後: 2025-11-04

このサンプルでは、基準日を変更せずに、十日後と二か月後の日付を別々に取得しています。日付計算では、基準日を残しておきたい場面が多くあります。予約開始日から締切日を求める場合、申込日から有効期限を求める場合、出荷予定日から到着予定日を求める場合など、元の日付と計算後の日付を分けて管理できることは実務でも役立ちます。

plusDaysやplusMonthsとの使い分け

LocalDateにはplusメソッドのほかに、plusDays、plusWeeks、plusMonths、plusYearsのような専用メソッドも用意されています。たとえば一日後を求めるならplusDays、一か月後を求めるならplusMonths、一年後を求めるならplusYearsを使えます。これらは短く書けるため、単純な日付加算ではとても便利です。

一方で、plusメソッドとChronoUnitを組み合わせる書き方は、単位を変数や条件によって切り替えたい場合に便利です。たとえば、画面から日数、月数、年数のどれを加算するか選ばせるような処理では、plusメソッドのほうが柔軟に対応できます。Javaの日付操作では、分かりやすく書きたいときは専用メソッド、単位を柔軟に扱いたいときはplusメソッドと覚えると整理しやすくなります。

実務で役立つ日付加算の考え方

LocalDateのplusメソッドは、実務でもさまざまな場面で活用できます。たとえば、会員登録日から一か月後を無料期間終了日にする、注文日から三日後を発送予定日にする、請求日から一か月後を支払期限にする、研修開始日から二週間後を課題提出日にするなど、日付を加算する処理は多くのシステムで必要になります。

予約システムでは、今日から七日後まで予約可能にする処理が考えられます。スケジュール管理アプリでは、開始日から一週間後や一か月後の予定を自動作成することがあります。勤怠管理システムでは、基準日から翌月の締め日を求める場面もあります。LocalDateとplusメソッドを理解しておくと、このような業務ロジックを自然に実装できるようになります。

また、plusメソッドは複数回つなげて使うこともできます。たとえば、三日後の二か月後のような日付を求めたい場合、today.plusで日数を加算し、その結果にさらにplusで月数を加算できます。メソッドチェーンとして書けるため、処理の流れを上から順に読みやすくなります。ただし、複雑になりすぎる場合は、途中の結果を変数に分けると保守しやすくなります。

初心者が注意したいポイント

LocalDateのplusメソッドを使うときは、まずChronoUnitの単位を正しく指定することが大切です。日数を加算したいのにMONTHSを指定すると、期待した結果とは異なる日付になります。DAYS、WEEKS、MONTHS、YEARSの意味を整理し、日付加算の目的に合った単位を選びましょう。

また、LocalDateは日付だけを扱うクラスなので、時刻を含めた計算をしたい場合はLocalDateTimeを使います。日付だけでよいのか、時刻まで必要なのかを判断することも大切です。たとえば、誕生日や営業日だけを扱うならLocalDateが向いていますが、予約日時やログ記録のように時分秒まで必要な場合はLocalDateTimeが向いています。

今回の記事では、java.timeパッケージ、LocalDateクラス、plusメソッド、ChronoUnit、plusDays、plusMonths、plusYears、日付加算、未来日付の計算、旧APIとの違いを学びました。これらを理解すると、Javaの日付処理をより安全に書けるようになります。日付操作は業務アプリケーションで頻繁に使われるため、初心者のうちにしっかり身につけておく価値があります。

Javaの日付計算では、正確さと読みやすさがとても重要です。LocalDateとplusメソッドを使えば、日付に対して何をどれだけ加算しているのかが明確になり、保守しやすいコードになります。今後、予約機能、期限管理、スケジュール機能、営業日判定などを作るときにも、今回学んだ内容を応用できます。

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

生徒

「LocalDateのplusメソッドを使うと、日付に日数や月数を加算できるんですね。」

先生

「その通りです。ChronoUnitを使うことで、日、週、月、年などの単位を指定できます。」

生徒

「plusを使うと、元の日付も変わるんですか。」

先生

「元の日付は変わりません。加算後の新しいLocalDateが返されるので、変数に代入して使います。」

生徒

「だから、今日の日付と一週間後の日付を別々に管理できるんですね。」

先生

「はい。基準日を残せるので、予約日や締切日を計算するときにも便利です。」

生徒

「plusDaysやplusMonthsとの違いも分かりました。短く書きたいときは専用メソッドが便利ですね。」

先生

「そうです。単純な加算ならplusDaysなど、単位を柔軟に扱いたいならplusとChronoUnitが分かりやすいです。」

生徒

「DateやCalendarより、LocalDateのほうが読みやすい理由も分かりました。」

先生

「Java8以降ではjava.timeパッケージを使うことで、安全で分かりやすい日付処理ができます。」

生徒

「予約システムや締切日の計算など、実務でもよく使えそうです。」

先生

「よく理解できています。LocalDateとplusメソッドを覚えておくと、Javaの日付加算に自信を持って対応できます。」

カテゴリの一覧へ
新着記事
New1
Java
JavaのNotSerializableExceptionを完全解説!初心者でも理解できるシリアライズと例外処理
新規投稿
New2
Spring
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス
更新記事
New3
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
更新記事
New4
Java
Javaのjava.mathとBigIntegerのintValueメソッドを完全解説!初心者でもわかる数値変換の基本
更新記事
人気記事
No.1
Java&Spring記事人気No1
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.2
Java&Spring記事人気No2
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.3
Java&Spring記事人気No3
JSP
JSPでフォームを表示して入力を受け取る基本手順をやさしく解説!初心者向けフォーム処理の入門ガイド
No.4
Java&Spring記事人気No4
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.5
Java&Spring記事人気No5
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.6
Java&Spring記事人気No6
JSP
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう
No.7
Java&Spring記事人気No7
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.8
Java&Spring記事人気No8
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方