Javaの日付を加算・減算する方法を徹底解説!初心者向けplusDays・minusMonthsの使い方
生徒
「Javaで1週間後の日付や、1か月前の日付を計算することってできますか?」
先生
「できますよ。plusDaysやminusMonthsなどのメソッドを使えば、簡単に日付の加算・減算ができます。」
生徒
「それならカレンダーアプリとか作れそうですね!どうやって使うのか教えてください!」
先生
「それでは、Javaの日付計算の基本からしっかり学んでいきましょう!」
1. Javaで日付を操作するには?LocalDateの活用法
Javaで日付の計算(加算・減算)を行うには、LocalDateクラスを使うのが基本です。
LocalDateはjava.timeパッケージに含まれており、年・月・日を扱う日付専用のクラスです。
これに対して、時間や分まで扱いたいときはLocalDateTimeを使います。
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で過去の日付を計算する方法
過去の日付を取得したいときには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など
plusDaysやminusMonths以外にも、Javaではさまざまな単位で日付計算が可能です。
代表的なメソッドを以下にまとめます。
plusWeeks(n):n週間後の日付を取得plusMonths(n):nか月後の日付を取得plusYears(n):n年後の日付を取得minusDays(n):n日前の日付を取得minusWeeks(n):n週間前の日付を取得minusYears(n):n年前の日付を取得
すべてのメソッドはLocalDateやLocalDateTimeでも同じように使えます。
5. LocalDateTimeで日時の加算・減算を行う方法
LocalDateTimeを使えば、日付と時刻を一緒に扱って加算・減算が可能です。
たとえば「3時間後」「15分前」などの時間操作もplusHoursやminusMinutesを使って行えます。
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と組み合わせて見やすく表示する
計算した日付や時刻は、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. 日付の加算・減算時の注意点(月末・うるう年など)
Javaの日付加算・減算は非常に便利ですが、以下のようなケースでは注意が必要です。
- 2月29日 → 翌年に
plusYears(1)すると、2月28日になる - 1月31日 →
plusMonths(1)で2月28日または29日になる(自動調整) - 31日 → 月によって存在しない場合、最後の日に調整される
Javaのjava.timeパッケージはこうした不整合を自動的に補正してくれますが、意図と違う日付になる可能性もあるので、テストは必ず行いましょう。