JavaのLocalDate.minusYearsの使い方を完全ガイド!日付から年を引く方法を初心者向けに解説
生徒
「Javaで日付から何年か前を計算したいんですけど、どうやればいいですか?」
先生
「それなら、JavaのLocalDateクラスにあるminusYearsメソッドを使えば、簡単に指定した年数だけ過去の日付を取得できますよ。」
生徒
「なるほど!でも、LocalDateってどうやって使うんですか?何かインポートが必要なんですか?」
先生
「その通りです。java.timeパッケージにあるクラスなので、まずはimport java.time.LocalDate;と書いてから使いましょう。それでは詳しく解説していきますね。」
1. java.timeパッケージとは?
「1. java.timeパッケージとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
Javaのjava.timeパッケージは、Java8以降で導入された新しい日付と時刻のAPI群です。従来のjava.util.DateやCalendarと比べて、より直感的で扱いやすいクラスが揃っており、日時操作をシンプルに行えるのが特徴です。
このパッケージには、日付専用のLocalDate、時刻専用のLocalTime、日付と時刻を同時に扱うLocalDateTimeなどのクラスがあります。
今回紹介するminusYearsメソッドは、LocalDateクラスの一部で、指定した年数を現在の日付から引く処理に使います。
2. LocalDateクラスとは?
LocalDateクラスは、日付だけを扱うクラスで、年・月・日の情報を管理できます。時刻やタイムゾーンの情報は含まず、「2025-09-04」のような日付データを扱うのに最適です。
このクラスは、日付の計算や比較、フォーマット変換などが簡単にできる機能を豊富に備えており、Javaで日付を扱う場合の標準的な手段となっています。
例えば今日の日付を取得するには、以下のように記述します。
LocalDate today = LocalDate.now();
3. minusYearsメソッドの基本的な使い方
minusYearsメソッドは、LocalDate型のオブジェクトから指定した年数だけ過去に戻った日付を取得するために使用します。
このメソッドの基本構文は以下の通りです:
LocalDate pastDate = LocalDate.now().minusYears(5);
このコードでは、現在の日付から5年前の日付を取得しています。メソッドの戻り値もLocalDate型で返されるため、そのまま他の日時操作にも利用可能です。
4. サンプルコード:5年前の日付を表示する
「4. サンプルコード:5年前の日付を表示する」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
それでは、実際にminusYearsメソッドを使って、現在の日付と5年前の日付を表示するサンプルコードを見てみましょう。
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate fiveYearsAgo = today.minusYears(5);
System.out.println("今日の日付: " + today);
System.out.println("5年前の日付: " + fiveYearsAgo);
}
}
このコードを実行すると、以下のような出力になります。
今日の日付: 2025-09-04
5年前の日付: 2020-09-04
5. minusYearsの応用例と注意点
minusYearsメソッドは単純な年数の引き算だけでなく、他のメソッドと組み合わせることでより柔軟な日付操作が可能になります。例えば、5年前の同じ月の1日を取得したい場合は次のように記述します。
LocalDate date = LocalDate.now().minusYears(5).withDayOfMonth(1);
また、minusYearsはうるう年に関する注意も必要です。例えば2020年2月29日から1年引くと、2021年には2月29日が存在しないため、結果は2月28日になります。
LocalDate leap = LocalDate.of(2020, 2, 29);
LocalDate result = leap.minusYears(1);
System.out.println(result); // → 2019-02-28
6. minusYearsと他のメソッドとの違い
minusYearsのように日付を減らすメソッドには他にもいくつか種類があります。例えば、月単位で減らしたい場合はminusMonths、日単位で減らしたい場合はminusDaysが使えます。
LocalDate minusMonths = LocalDate.now().minusMonths(3);
LocalDate minusDays = LocalDate.now().minusDays(10);
これらのメソッドを組み合わせれば、「3年前の同じ月の10日前」のような複雑な日付も簡単に表現できます。
7. どんな場面で使うのか?実用例を紹介
「7. どんな場面で使うのか?実用例を紹介」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
minusYearsメソッドは、以下のような実務でも活用されることがあります:
- 会員登録日から○年経過したかチェック
- 履歴書や経歴の年数計算
- 資格の有効期限を過去にさかのぼって確認
日付の計算は、正確さが求められる業務でも頻繁に使われるため、信頼性の高いLocalDateとminusYearsの組み合わせは非常に重宝されます。