JavaのLocalDate.plusメソッドの使い方を完全ガイド!初心者でもわかる日付の加算方法
生徒
「Javaで日付を簡単に1日や1ヶ月だけ加算したい場合、どうすれば良いですか?」
先生
「その場合は、java.timeパッケージのLocalDateクラスを使うのがおすすめです。特にplusメソッドが便利ですよ。」
生徒
「そのplusメソッドって、どうやって使うんですか?」
先生
「それでは、JavaのLocalDateクラスとplusメソッドの基本的な使い方を一緒に見ていきましょう。」
1. java.timeパッケージとは?
「1. java.timeパッケージとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
Javaのjava.timeパッケージは、Java8以降で導入された新しい日付と時刻のAPIです。従来のjava.util.DateやCalendarに代わって、より直感的で扱いやすい日付処理ができるようになりました。
このパッケージには、LocalDate、LocalTime、LocalDateTimeなど、日付や時刻を扱うためのクラスが豊富に用意されています。
2. LocalDateクラスとは?
LocalDateクラスは、日付(年・月・日)を表すためのクラスです。時刻情報は含まれておらず、タイムゾーンも考慮されないシンプルな日付型です。
例えば、今日の日付を取得したり、未来の日付や過去の日付を計算するのに非常に便利です。Javaの日付操作を行うなら、まず覚えておきたい基本クラスのひとつです。
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の種類」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
JavaのLocalDateクラスとplusメソッドを使う際によく使う単位は以下のとおりです。
ChronoUnit.DAYS:日単位で加算ChronoUnit.WEEKS:週単位で加算ChronoUnit.MONTHS:月単位で加算ChronoUnit.YEARS:年単位で加算
例えば、1週間後の日付を取得したい場合は以下のように書けます。
LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);
5. 複数の期間を連続で加算する方法
LocalDateでは、複数の期間を連続で加算することもできます。たとえば「3日後の2ヶ月後」を求めたい場合、plusメソッドをチェーンして書けます。
LocalDate future = today.plus(3, ChronoUnit.DAYS).plus(2, ChronoUnit.MONTHS);
こうすることで、柔軟に日付を操作できます。特にスケジュール管理アプリや予約システムなどで便利です。
6. plusDays・plusMonths・plusYearsとの違い
LocalDateクラスには、plusの他にも、plusDays、plusMonths、plusYearsといった便利なメソッドが用意されています。
これらはそれぞれ、ChronoUnit.DAYS、ChronoUnit.MONTHS、ChronoUnit.YEARSを指定するplusと同じ結果を返しますが、よりシンプルに書けるのが特徴です。
LocalDate tomorrow = today.plusDays(1);
LocalDate nextMonth = today.plusMonths(1);
LocalDate nextYear = today.plusYears(1);
7. plusメソッドの注意点
「7. plusメソッドの注意点」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
plusメソッドは、元のLocalDateインスタンスを変更しない点に注意しましょう。日付の加算結果は新しいオブジェクトとして返されます。そのため、元の日付と混同しないように変数にきちんと代入して扱うのがポイントです。
また、加算単位として無効なものを指定すると例外が発生するため、ChronoUnit列挙型の正しい定数を使いましょう。
8. java.timeと旧APIの違い
Java8以前はjava.util.DateやCalendarを使って日付操作をしていましたが、わかりづらくバグの原因になりやすいものでした。java.timeパッケージでは、こうした問題点が改善され、より安全で読みやすいコードが書けるようになっています。
これからJavaを学ぶ方や、実務で日付操作を行いたい方は、ぜひjava.time.LocalDateとplusメソッドをマスターしましょう。
まとめ
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の日付加算に自信を持って対応できます。」