カテゴリ: Javaの例外処理 更新日: 2026/07/03

Javaの日付を加算・減算する方法を徹底解説!初心者向けplusDays・minusMonthsの使い方

361
Java の日付を加算・減算する方法(plusDays, minusMonths など)

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

生徒

「Javaで1週間後の日付や、1か月前の日付を計算することってできますか?」

先生

「できますよ。plusDaysminusMonthsなどのメソッドを使えば、簡単に日付の加算・減算ができます。」

生徒

「それならカレンダーアプリとか作れそうですね!どうやって使うのか教えてください!」

先生

「それでは、Javaの日付計算の基本からしっかり学んでいきましょう!」

1. Javaで日付を操作するには?LocalDateの活用法

1. Javaで日付を操作するには?LocalDateの活用法
1. Javaで日付を操作するには?LocalDateの活用法

Javaで日付の計算(加算・減算)を行うには、LocalDateクラスを使うのが基本です。
LocalDatejava.timeパッケージに含まれており、年・月・日を扱う日付専用のクラスです。
これに対して、時間や分まで扱いたいときはLocalDateTimeを使います。

2. plusDaysで日付を加算する方法(未来の日付を計算)

2. plusDaysで日付を加算する方法(未来の日付を計算)
2. plusDaysで日付を加算する方法(未来の日付を計算)

Javaで数日後の日付を取得したいときはplusDaysメソッドを使います。
たとえば「今日から7日後」を計算したい場合は以下のように書きます。


import java.time.LocalDate;

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

今日の日付: 2025-09-03
7日後の日付: 2025-09-10

このようにplusDays(7)で「7日後」を取得できます。
引数に入れる数字を変えれば、好きな日数を加算できます。

3. minusMonthsで過去の日付を計算する方法

3. minusMonthsで過去の日付を計算する方法
3. minusMonthsで過去の日付を計算する方法

過去の日付を取得したいときにはminus系のメソッドを使います。
たとえば「1か月前」の日付を求めたいときはminusMonthsを使います。


import java.time.LocalDate;

public class MinusMonthsExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate lastMonth = today.minusMonths(1);
        System.out.println("今日の日付: " + today);
        System.out.println("1か月前の日付: " + lastMonth);
    }
}

今日の日付: 2025-09-03
1か月前の日付: 2025-08-03

minusMonths(1)のように指定すると、1か月分減算されます。
マイナスの方向に進む計算も簡単にできるのがJavaの日付APIの強みです。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 他にも使える!plusWeeks・plusYears・minusDaysなど

4. 他にも使える!plusWeeks・plusYears・minusDaysなど
4. 他にも使える!plusWeeks・plusYears・minusDaysなど

plusDaysminusMonths以外にも、Javaではさまざまな単位で日付計算が可能です。
代表的なメソッドを以下にまとめます。

  • plusWeeks(n):n週間後の日付を取得
  • plusMonths(n):nか月後の日付を取得
  • plusYears(n):n年後の日付を取得
  • minusDays(n):n日前の日付を取得
  • minusWeeks(n):n週間前の日付を取得
  • minusYears(n):n年前の日付を取得

すべてのメソッドはLocalDateLocalDateTimeでも同じように使えます。

5. LocalDateTimeで日時の加算・減算を行う方法

5. LocalDateTimeで日時の加算・減算を行う方法
5. LocalDateTimeで日時の加算・減算を行う方法

LocalDateTimeを使えば、日付と時刻を一緒に扱って加算・減算が可能です。
たとえば「3時間後」「15分前」などの時間操作もplusHoursminusMinutesを使って行えます。


import java.time.LocalDateTime;

public class DateTimeCalcExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime after3Hours = now.plusHours(3);
        LocalDateTime before15Minutes = now.minusMinutes(15);

        System.out.println("現在時刻: " + now);
        System.out.println("3時間後: " + after3Hours);
        System.out.println("15分前: " + before15Minutes);
    }
}

現在時刻: 2025-09-03T15:00
3時間後: 2025-09-03T18:00
15分前: 2025-09-03T14:45

LocalDateTimeを使えば、より細かい単位の時間も直感的に操作できます。

6. DateTimeFormatterと組み合わせて見やすく表示する

6. DateTimeFormatterと組み合わせて見やすく表示する
6. DateTimeFormatterと組み合わせて見やすく表示する

計算した日付や時刻は、DateTimeFormatterを使うことで見やすい形式に整えることができます。
たとえば、次のように「yyyy年MM月dd日 HH時mm分」形式で出力可能です。


import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class FormatAfterCalc {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime future = now.plusDays(5).plusHours(2);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分");
        String formatted = future.format(formatter);
        System.out.println("5日後の2時間後: " + formatted);
    }
}

5日後の2時間後: 2025年09月08日 17時00分

フォーマットを使うことで、ユーザーにとって読みやすく、直感的に理解できる出力になります。

7. 日付の加算・減算時の注意点(月末・うるう年など)

7. 日付の加算・減算時の注意点(月末・うるう年など)
7. 日付の加算・減算時の注意点(月末・うるう年など)

Javaの日付加算・減算は非常に便利ですが、以下のようなケースでは注意が必要です。

  • 2月29日 → 翌年にplusYears(1)すると、2月28日になる
  • 1月31日 → plusMonths(1)で2月28日または29日になる(自動調整)
  • 31日 → 月によって存在しない場合、最後の日に調整される

Javaのjava.timeパッケージはこうした不整合を自動的に補正してくれますが、意図と違う日付になる可能性もあるので、テストは必ず行いましょう。

まとめ

まとめ
まとめ

Javaの日付加算減算の基本理解を整理する

Javaの日付計算はLocalDateやLocalDateTimeを中心に考えることで、非常にシンプルかつ安全に実装できます。特にplusDaysやminusMonthsといったメソッドは、日付の加算や減算を直感的に行えるため、初心者から実務レベルまで幅広く利用されています。従来のDateクラスやCalendarクラスと比較して、コードの可読性や保守性が大幅に向上している点も重要なポイントです。

日付計算において重要なのは、現在の日付を基準として未来や過去の日付を正確に求めることです。例えばスケジュール管理や予約システム、ログ分析など、多くのシステムで日付の加算減算処理が必要になります。そのためLocalDateを使った日付操作を理解することは、Java開発において非常に重要なスキルとなります。

plus系メソッドとminus系メソッドの使い分け

Javaの日付計算では、未来の日付を求める場合はplus系メソッド、過去の日付を求める場合はminus系メソッドを使用します。plusDaysやplusWeeksを使えば数日後や数週間後を簡単に取得でき、minusMonthsやminusYearsを使えば過去のデータを取得することができます。このようにメソッド名から処理内容が直感的に分かる設計になっているため、コードの可読性が高くなります。

また、これらのメソッドは元のオブジェクトを変更するのではなく、新しい日付オブジェクトを返す点にも注意が必要です。この不変性の仕組みにより、安全なプログラムが実現されています。日付を扱う際には、変数に再代入して使うことを意識すると良いでしょう。

日時操作にはLocalDateTimeを活用する

日付だけでなく時間も扱いたい場合はLocalDateTimeを使用します。plusHoursやminusMinutesなどを組み合わせることで、より細かい時間計算が可能になります。例えば予約システムでは開始時間や終了時間の計算が必要になるため、LocalDateTimeの理解は必須です。

日付と時刻を同時に扱うことで、より現実的なシステム設計が可能になります。特にログ処理やバッチ処理などでは、時間単位での計算が求められるため、LocalDateTimeの活用場面は非常に多くなります。

フォーマット処理でユーザーフレンドリーな表示を実現

DateTimeFormatterを使うことで、計算した日付を分かりやすい形式で表示できます。例えば日本語形式で表示することで、ユーザーにとって理解しやすい画面を作ることができます。システム開発では、内部処理だけでなく表示形式も重要な要素となります。

フォーマットを適切に設定することで、ログや画面表示の品質が向上します。特に業務システムでは日付の見やすさがユーザー体験に直結するため、フォーマット処理は必ず押さえておきたいポイントです。

実務でよく使う日付計算のサンプルコード


import java.time.LocalDate;
import java.time.LocalDateTime;

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

        LocalDate today = LocalDate.now();

        LocalDate after10Days = today.plusDays(10);
        LocalDate before2Months = today.minusMonths(2);

        System.out.println("今日: " + today);
        System.out.println("10日後: " + after10Days);
        System.out.println("2か月前: " + before2Months);

        LocalDateTime now = LocalDateTime.now();
        LocalDateTime after5Hours = now.plusHours(5);

        System.out.println("現在時刻: " + now);
        System.out.println("5時間後: " + after5Hours);
    }
}

今日: 2025-09-03
10日後: 2025-09-13
2か月前: 2025-07-03
現在時刻: 2025-09-03T15:00
5時間後: 2025-09-03T20:00

日付計算の注意点と実務での落とし穴

Javaの日付計算では、月末やうるう年などの特殊なケースに注意が必要です。例えば一月三十一日に一か月を加算すると、二月の最終日に自動的に補正されます。この仕様を理解していないと、意図しない結果になることがあります。

また、システムによっては日付の基準やタイムゾーンの違いが影響することもあります。特にグローバルなサービスでは、タイムゾーンを意識した設計が求められます。こうした点も含めて、日付計算は単純なようで奥が深い分野です。

まとめとして押さえるべき重要ポイント

Javaの日付加算減算はLocalDateとLocalDateTimeを使うことで安全かつ簡単に実装できます。plus系とminus系のメソッドを使い分けることで、未来と過去の計算を直感的に行えます。また、DateTimeFormatterを使うことで見やすい表示も実現できます。

日付操作は業務システムやWebアプリケーションにおいて必須の処理です。基本をしっかり理解し、サンプルコードを繰り返し実行することで、確実にスキルとして身につけることができます。今回学んだ内容をベースに、より複雑な日付処理にも挑戦していきましょう。

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

生徒

Javaの日付計算は思っていたより簡単でした

先生

LocalDateとLocalDateTimeを理解すれば基本は十分です

生徒

plusDaysとminusMonthsの使い分けも分かりました

先生

未来と過去でメソッドを使い分けるのがポイントです

生徒

月末の計算は少し注意が必要ですね

先生

自動補正される仕組みを理解しておくことが大切です

生徒

実務でもかなり使いそうだと感じました

先生

日付処理はほぼすべてのシステムで必要になる重要な技術です

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

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

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

Javaで1週間後の日付を計算するには、どのクラスのどのメソッドを使えばよいでしょうか?

Javaで日付の加算を行うには、java.timeパッケージに含まれるLocalDateクラスを使用するのが基本です。1週間後、つまり7日後の日付を取得したい場合は、LocalDateオブジェクトに対してplusDaysメソッドを呼び出し、引数に7を指定することで計算できます。例えば、LocalDate.now().plusDays(7)と記述することで、本日から7日後の日付オブジェクトを簡単に取得することが可能です。この方法は、カレンダーアプリの作成や予約システムの納期計算など、様々なプログラミングシーンで活用されます。
Javaの例外処理の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク