Javaで日付の計算を簡単に行う方法

Javaの日付や時刻を取り扱う際には多くの罠がありましたが、Java 8で導入されたjava.timeパッケージはその多くの問題を解決してくれました。このパッケージを使用すれば、日付や時刻の操作が非常に容易になります。

現在の日付を取得する

最も基本的な操作の一つは、現在の日付を取得することです。

import java.time.LocalDate;

LocalDate today = LocalDate.now();
System.out.println("Today's date: " + today);

LocalDate.now()メソッドを使用することで、現在の日付を取得できます。

日付に日数を加算する

日付に特定の日数を加算する場面は頻繁にあります。例えば、5日後の日付を知りたい場合、以下のように計算できます。

LocalDate futureDate = today.plusDays(5);
System.out.println("5 days later: " + futureDate);

このplusDaysメソッドは新しいLocalDateオブジェクトを返すため、元の日付オブジェクトは変更されません。

日付から日数を減算する

同様に、過去の日付を取得するにはminusDaysメソッドを使用します。

LocalDate pastDate = today.minusDays(5);
System.out.println("5 days earlier: " + pastDate);

月の加算と減算

月の加算や減算も同様のメソッドを使用します。1か月後、あるいは1か月前の日付を取得する例は以下の通りです。

LocalDate nextMonth = today.plusMonths(1);
System.out.println("1 month later: " + nextMonth);

LocalDate prevMonth = today.minusMonths(1);
System.out.println("1 month earlier: " + prevMonth);

日付間の差を計算する

2つの日付の間の日数を計算する場面もよくあります。その際にはChronoUnit.DAYS.betweenメソッドを使用します。

LocalDate startDate = LocalDate.of(2020, 1, 1);
LocalDate endDate = LocalDate.of(2021, 1, 1);

long daysBetween = java.time.temporal.ChronoUnit.DAYS.between(startDate, endDate);
System.out.println("Days between: " + daysBetween);

特定の日付を作成する

特定の年、月、日を指定して日付オブジェクトを作成する場合、LocalDate.ofメソッドを使用します。

LocalDate newYear = LocalDate.of(2023, 1, 1);
System.out.println("New Year: " + newYear);

まとめ

以上、Javaのjava.timeパッケージを使用して日付の操作を行う基本的な方法を紹介しました。このパッケージは非常に強力で、これまでの日付操作の面倒や複雑さを大幅に削減してくれます。Javaで日付操作を行う際には、ぜひこのパッケージを活用してみてください。