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

JavaのLocalDateTimeクラスとplusMonthsメソッドを完全ガイド!初心者でもわかる月単位の日時計算

LocalDateTimeのplusMonthsメソッド
LocalDateTimeのplusMonthsメソッド

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

生徒

「Javaで現在の日付から数か月後を求める方法ってありますか?」

先生

「はい、Javaのjava.timeパッケージに含まれるLocalDateTimeクラスを使えば、plusMonthsメソッドで簡単に数か月後の日付を求められますよ。」

生徒

「例えば三か月後の締め切り日を計算したいときに使えるんですね?」

先生

「その通りです。では基本から順に使い方を学んでいきましょう!」

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

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

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

Javaのjava.timeパッケージは、日時や時間を直感的に操作するために導入されたライブラリです。従来のDateCalendarよりも安全で扱いやすく、システム開発やアプリケーション開発で頻繁に利用されています。特に年月を扱うときにわかりやすい記述ができるため、初心者にもおすすめです。

2. LocalDateTimeクラスの基本

2. LocalDateTimeクラスの基本
2. LocalDateTimeクラスの基本

LocalDateTimeクラスは年月日と時刻をまとめて表現できる便利なクラスです。例えば「2025年9月23日 16時30分」のような日時をひとつのオブジェクトで扱えます。タイムゾーンの情報を持たないので、シンプルに日時を計算したいときに適しています。


import java.time.LocalDateTime;

public class DateTimeNow {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        System.out.println("現在の日時: " + now);
    }
}

現在の日時: 2025-09-23T16:30:45.123

3. plusMonthsメソッドの基本的な使い方

3. plusMonthsメソッドの基本的な使い方
3. plusMonthsメソッドの基本的な使い方

plusMonthsメソッドは、現在のLocalDateTimeから指定した月数を加算して新しい日時を返します。元のインスタンスは変更されず、新しいオブジェクトが生成されるのが特徴です。


import java.time.LocalDateTime;

public class PlusMonthsExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime threeMonthsLater = now.plusMonths(3);
        System.out.println("現在: " + now);
        System.out.println("三か月後: " + threeMonthsLater);
    }
}

現在: 2025-09-23T16:30:45.123
三か月後: 2025-12-23T16:30:45.123

4. マイナスを指定して過去の月を取得

「4. マイナスを指定して過去の月を取得」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. マイナスを指定して過去の月を取得
4. マイナスを指定して過去の月を取得

plusMonthsはマイナスの値も指定できます。例えばplusMonths(-2)とすると二か月前の日時を計算できます。過去データの集計や履歴参照の際に役立ちます。


LocalDateTime twoMonthsAgo = LocalDateTime.now().plusMonths(-2);
System.out.println("二か月前: " + twoMonthsAgo);

5. 業務システムでの活用例

5. 業務システムでの活用例
5. 業務システムでの活用例

業務システムでは月単位の計算がよく使われます。例えば以下のような場面です。

  • 月額課金サービスの次回更新日を計算する
  • 契約の有効期限を三か月後に設定する
  • 定期的な請求日や締め日を自動算出する

これらの処理を簡単に実装できるのがplusMonthsです。

6. 月末や日数調整に注意

6. 月末や日数調整に注意
6. 月末や日数調整に注意

例えば1月31日にplusMonths(1)をすると2月28日や29日が返ってきます。月によって日数が異なるため、この動作を理解しておくことが大切です。金融システムや契約管理システムでは特に重要になります。

7. LocalDateTimeと他のクラスの比較

「7. LocalDateTimeと他のクラスの比較」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. LocalDateTimeと他のクラスの比較
7. LocalDateTimeと他のクラスの比較

LocalDateは日付のみ、YearMonthは年月のみを扱います。月単位の計算が中心ならYearMonthでも良いですが、時刻まで必要な場合はLocalDateTimeが適しています。状況に応じて適切に選択すると良いでしょう。

8. 実践的なコード例

8. 実践的なコード例
8. 実践的なコード例

例えば、ユーザーが会員登録した日から六か月後に更新期限を設定する場合は以下のように書けます。


import java.time.LocalDateTime;

public class MembershipExample {
    public static void main(String[] args) {
        LocalDateTime registered = LocalDateTime.now();
        LocalDateTime renewal = registered.plusMonths(6);
        System.out.println("登録日: " + registered);
        System.out.println("更新期限: " + renewal);
    }
}

登録日: 2025-09-23T16:30:45.123
更新期限: 2026-03-23T16:30:45.123

9. plusMonthsを応用したシステム開発

9. plusMonthsを応用したシステム開発
9. plusMonthsを応用したシステム開発

plusMonthsは単なる月計算にとどまらず、会計システムやスケジュール管理アプリでも広く利用されます。例えば「三か月後の決算処理日を自動で計算する」や「契約開始から十二か月後に満了する日を表示する」といった実装が可能です。こうした応用例を考えることで、プログラミングの幅がさらに広がります。

カテゴリの一覧へ
新着記事
New1
Java
JavaのStreamのreduceを完全解説!初心者でもわかる集約処理の基本
新規投稿
New2
Spring
Javaの@withinアノテーションを初心者向けに解説!Spring AOPでの使い方を完全ガイド
更新記事
New3
Spring
Springの@AfterThrowingアノテーションの使い方を完全ガイド!初心者でもわかる例外処理
更新記事
New4
Spring
Javaの@AfterReturningアノテーションの使い方を完全ガイド!初心者でもわかるAOP入門
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Thymeleaf
Thymeleafのth:checkedの使い方!チェックボックスON/OFFを動的に制御する方法
No.3
Java&Spring記事人気No3
Thymeleaf
Thymeleaf(タイムリーフ)の使い方入門!初心者でもわかるth:textの基礎
No.4
Java&Spring記事人気No4
Java
Javaの抽象クラス(abstract)を完全ガイド!継承と設計のルールを学ぶ
No.5
Java&Spring記事人気No5
Spring
Spring BootのMultipartFile入門:ファイルアップロード・ダウンロードの実装方法と制限設定
No.6
Java&Spring記事人気No6
Spring
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.7
Java&Spring記事人気No7
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.8
Java&Spring記事人気No8
Thymeleaf
Thymeleafのth:blockの使い方を完全ガイド!初心者でもわかるテンプレートブロック管理