カテゴリ: Javaの例外処理 更新日: 2025/11/20

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の強みです。

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の例外処理の一覧へ
新着記事
FlutterのInheritedWidgetとは?仕組みと活用方法
FlutterのInheritedWidgetとは?仕組みと活用方法を初心者向けにやさしく解説
Blocパターンの仕組みと導入方法をわかりやすく解説
FlutterのBlocパターンを完全ガイド!初心者でもわかる状態管理と導入方法
Flutterのプロジェクト作成コマンドとディレクトリ構成を学ぼう
Flutterのプロジェクト作成コマンドとディレクトリ構成を学ぼう
Flutterのウィジェットとは?初心者向けに仕組みと使い方を解説
Flutterのウィジェットとは?初心者向けに仕組みと使い方を解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
Java のインターフェースとは?普通のクラスとの違いを学ぼう
Javaのインターフェースとは?普通のクラスとの違いを学ぼう【初心者向け解説】
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説