JavaのLocalDateTimeクラスとplusDaysメソッドを徹底解説!初心者でもわかる日付操作
生徒
「Javaで日付を一日進める方法ってありますか?」
先生
「はい、Javaにはjava.timeパッケージが用意されていて、その中のLocalDateTimeクラスを使うと日付や時刻の操作ができますよ。」
生徒
「そのクラスを使えば、例えば今日の日付を三日後にしたりできますか?」
先生
「はい、plusDaysメソッドを使えば簡単に未来の日付を計算できます。それでは基本から順番に見ていきましょう!」
1. java.timeパッケージとは?
Javaのjava.timeパッケージは、日時を扱うための標準ライブラリです。従来のDateやCalendarよりも直感的に使えるように設計されており、時間や日付の計算をシンプルに書けるのが特徴です。特に、LocalDateTimeは日付と時刻を同時に扱える便利なクラスで、システム開発やアプリケーションで頻繁に利用されます。
2. LocalDateTimeクラスの基本
LocalDateTimeクラスは、年月日と時刻を保持できるクラスです。例えば「2025年9月23日 10時30分」といった形の情報を扱えます。重要なのは、タイムゾーン情報を持たないため、シンプルに日付や時刻を扱う用途に最適という点です。
新しく現在の日時を取得する場合には、以下のように書けます。
import java.time.LocalDateTime;
public class DateTimeExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
System.out.println("現在の日時: " + now);
}
}
現在の日時: 2025-09-23T10:30:15.123
将来を見据えて、+αのスキルを身につけたい方へ
JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。
AIを学ぶならアイデミープレミアム3. plusDaysメソッドの基本的な使い方
plusDaysメソッドは、指定した日数を現在の日付に加算して新しいLocalDateTimeインスタンスを返します。元のオブジェクトを変更せず、新しい値を生成する「不変オブジェクト」の考え方に基づいています。
import java.time.LocalDateTime;
public class PlusDaysExample {
public static void main(String[] args) {
LocalDateTime today = LocalDateTime.now();
LocalDateTime threeDaysLater = today.plusDays(3);
System.out.println("今日: " + today);
System.out.println("三日後: " + threeDaysLater);
}
}
今日: 2025-09-23T10:30:15.123
三日後: 2025-09-26T10:30:15.123
4. マイナスの日数を指定する
plusDaysはプラスの日数だけでなく、マイナスの値を渡すことでも過去の日付を求められます。例えば、plusDays(-7)とすれば一週間前の日付を取得できます。過去データの検索やログの参照などに便利です。
LocalDateTime lastWeek = LocalDateTime.now().plusDays(-7);
System.out.println("一週間前: " + lastWeek);
5. plusDaysと業務システムでの活用例
例えば、予約システムやスケジュール管理アプリでは「三日後の締め切り日時」を計算したり「七日後のリマインド通知」を設定したりするケースがあります。その際にLocalDateTimeとplusDaysを組み合わせると非常に簡単に実現できます。
また、勤怠管理や定期的なレポート生成でも「一定期間後」の日時を自動的に算出できるため、プログラムの可読性やメンテナンス性も高まります。
6. LocalDateTimeと他のクラスとの比較
初心者が混乱しやすいのは、LocalDateやLocalTimeとの違いです。LocalDateは日付のみ、LocalTimeは時刻のみを扱います。LocalDateTimeは両方をまとめて管理できるので、日時をセットで扱う場面に適しています。
さらに、時刻を含めた計算が不要であればLocalDateにplusDaysを使うほうがシンプルになることもあります。状況に応じて使い分けるのが大切です。
7. plusDaysを安全に使うための注意点
plusDaysを利用する際には以下の点に注意しましょう。
- 元の
LocalDateTimeは変更されないため、必ず戻り値を新しい変数に代入すること。 - タイムゾーンを扱う必要がある場合は
ZonedDateTimeを使うこと。 - マイナスの値を渡すと過去に戻るため、意図せず未来ではなく過去の日付を計算してしまう可能性があること。
こうした点を理解しておけば、エラーの少ない安全なプログラムを作成できます。
8. plusDaysを使った実践的なコード例
例えば、会員登録から三十日後に有効期限を設定する処理を考えてみましょう。以下のように簡単に書けます。
import java.time.LocalDateTime;
public class ExpirationExample {
public static void main(String[] args) {
LocalDateTime registered = LocalDateTime.now();
LocalDateTime expireDate = registered.plusDays(30);
System.out.println("登録日: " + registered);
System.out.println("有効期限: " + expireDate);
}
}
登録日: 2025-09-23T10:30:15.123
有効期限: 2025-10-23T10:30:15.123
まとめ
LocalDateTimeとplusDaysで理解する日付操作の基本
この記事では、Javaにおける日付と時刻の操作として、LocalDateTimeクラスとplusDaysメソッドを中心に学習してきました。
Javaで日付計算を行う場面は非常に多く、業務システム、Webアプリケーション、バッチ処理、予約管理、期限管理など、さまざまなシーンで活用されます。
特にjava.timeパッケージは、従来のDateやCalendarと比べて分かりやすく、安全に日付操作ができる点が大きな特徴です。
LocalDateTimeは、年月日と時刻を一つのオブジェクトとして扱えるため、「いつ」という情報を正確に管理したい場合に非常に便利です。
さらに、plusDaysメソッドを使うことで、指定した日数を加算した新しい日時を簡単に求めることができます。
重要なポイントとして、LocalDateTimeは不変オブジェクトであるため、元の日時が変更されないという点も理解しておく必要があります。
業務で役立つplusDaysの考え方
実際の業務では、「登録日から三十日後」「申請日から七日後」「今日から一週間後」など、相対的な日付計算が頻繁に登場します。
そのような処理をif文や複雑な計算で実装するのではなく、plusDaysを使うことで、読みやすく保守しやすいコードを書くことができます。
また、マイナスの値を指定することで過去の日付も取得できるため、ログ分析や履歴検索にも応用可能です。
まとめとしてのサンプルプログラム
ここで、記事全体の理解を深めるために、LocalDateTimeとplusDaysを組み合わせたシンプルなサンプルプログラムを振り返ります。
登録日を基準に、通知日と有効期限を計算する例です。
import java.time.LocalDateTime;
public class SummaryExample {
public static void main(String[] args) {
LocalDateTime baseDate = LocalDateTime.now();
LocalDateTime noticeDate = baseDate.plusDays(7);
LocalDateTime expireDate = baseDate.plusDays(30);
System.out.println("基準日: " + baseDate);
System.out.println("通知日: " + noticeDate);
System.out.println("有効期限: " + expireDate);
}
}
このように、基準となる日時を一つ用意し、そこから必要な日付を計算する考え方は、Javaの日付操作において非常に重要です。 ロジックが明確になり、後から見返したときにも処理内容が理解しやすくなります。
生徒
「LocalDateTimeとplusDaysを使えば、日付の計算がすごく簡単になるんですね。 前は自分で日付を計算しないといけないと思っていました。」
先生
「そうですね。Javaには便利な標準クラスが用意されているので、それを正しく使うことが大切です。 特に日付や時刻はバグが出やすい分野なので、信頼できるAPIを使うのが基本です。」
生徒
「plusDaysでマイナスの値を指定すると過去の日付も取れるのは便利だと思いました。 ログの確認や履歴検索にも使えそうですね。」
先生
「その通りです。さらに、タイムゾーンが必要な場合はZonedDateTimeを使うなど、 状況に応じたクラス選択も重要になります。」
生徒
「LocalDateやLocalTimeとの違いも理解できました。 これからは用途に合わせて使い分けられそうです。」
先生
「とても良い理解ですね。今回学んだLocalDateTimeとplusDaysの考え方は、 Javaの基礎として今後の開発でも必ず役に立ちますよ。」
Java Silver SE17(1Z0-825)の演習量を重視したい人には、 定番の問題集がこちらです。
徹底攻略 Java SE 17 Silver 問題集をAmazonで見る※ Amazonアソシエイト・プログラムを利用しています