JavaのLocalDateTimeの使い方を完全ガイド!初心者でもわかる日時操作の基本
生徒
「Javaで現在の日付や時間を扱いたいんですけど、どうすればいいですか?」
先生
「その場合はLocalDateTimeクラスを使うと便利です。Javaのjava.timeパッケージに含まれていますよ。」
生徒
「なんとなく聞いたことあるけど、どうやって使うんですか?」
先生
「それでは、JavaのLocalDateTimeの使い方を一緒に学んでいきましょう!」
1. java.timeパッケージとLocalDateTimeクラスとは?
java.timeパッケージは、Java 8以降で追加された新しい日付と時間のAPIを提供します。中でもLocalDateTimeクラスは、日付と時間を同時に扱うことができる便利なクラスです。
このクラスを使えば、日付や時間を取得したり、加算・減算・比較なども簡単に行うことができます。従来のDateやCalendarよりも直感的で使いやすいのが特徴です。
2. LocalDateTimeで現在日時を取得する方法
もっとも基本的な使い方は、現在の日時を取得することです。以下のように書くと、今この瞬間の日時を取得できます。
import java.time.LocalDateTime;
public class CurrentDateTimeExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
System.out.println("現在日時: " + now);
}
}
実行すると、次のような出力が得られます。
現在日時: 2025-09-04T15:20:30.123
3. LocalDateTimeの特定日時を作成する
LocalDateTimeでは、任意の日付と時間を指定して作成することもできます。たとえば、2025年1月1日午前9時0分を生成したい場合は次のようにします。
LocalDateTime customDateTime = LocalDateTime.of(2025, 1, 1, 9, 0);
System.out.println("指定日時: " + customDateTime);
指定日時: 2025-01-01T09:00
このように、年月日・時分秒を自由に設定できます。
4. 日付や時間を加算・減算する方法
LocalDateTimeでは、日時に対して加算・減算することも簡単にできます。たとえば、3日後や2時間前を求めることができます。
LocalDateTime now = LocalDateTime.now();
LocalDateTime threeDaysLater = now.plusDays(3);
LocalDateTime twoHoursBefore = now.minusHours(2);
System.out.println("3日後: " + threeDaysLater);
System.out.println("2時間前: " + twoHoursBefore);
5. LocalDateTimeから個別の要素を取得する
LocalDateTimeから年・月・日・時・分などを個別に取り出すには、getterメソッドを使います。
LocalDateTime now = LocalDateTime.now();
int year = now.getYear();
int month = now.getMonthValue();
int day = now.getDayOfMonth();
int hour = now.getHour();
int minute = now.getMinute();
System.out.println("年: " + year);
System.out.println("月: " + month);
System.out.println("日: " + day);
System.out.println("時: " + hour);
System.out.println("分: " + minute);
6. LocalDateTimeを文字列にフォーマットする
日時を見やすい形式で表示したいときは、DateTimeFormatterを使ってフォーマットできます。
import java.time.format.DateTimeFormatter;
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String formatted = now.format(formatter);
System.out.println("フォーマット済み日時: " + formatted);
フォーマット済み日時: 2025/09/04 15:20:30
7. LocalDateTimeを使った日時の比較
日時の前後関係を調べたい場合は、isBeforeやisAfterメソッドを使います。
LocalDateTime dateTime1 = LocalDateTime.of(2025, 1, 1, 10, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2025, 1, 1, 12, 0);
boolean isBefore = dateTime1.isBefore(dateTime2);
boolean isAfter = dateTime1.isAfter(dateTime2);
System.out.println("dateTime1がdateTime2より前?: " + isBefore);
System.out.println("dateTime1がdateTime2より後?: " + isAfter);
8. LocalDateTimeを他のAPIと組み合わせて使う
LocalDateTimeは、ZoneIdやZonedDateTimeと組み合わせることで、タイムゾーンの変換なども可能です。世界中の時間を扱いたい場合にも便利です。
import java.time.ZoneId;
import java.time.ZonedDateTime;
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zoned = localDateTime.atZone(ZoneId.of("Asia/Tokyo"));
System.out.println("東京の日時: " + zoned);
9. LocalDateTimeの注意点:タイムゾーンを持たない
LocalDateTimeは「ローカル時間」を扱うクラスであり、タイムゾーン情報を持っていません。世界中のユーザー向けのアプリケーションなどで時差が関係する場合は、ZonedDateTimeやInstantを検討しましょう。
10. LocalDateTimeの用途とよく使われる場面
LocalDateTimeは、スケジュールアプリ・タスク管理・予約システムなど、日付と時間の情報が必要な多くの場面で使われます。
特に、時間帯が関係ないローカル環境での処理には最適で、初心者にも扱いやすいAPIです。
まとめ
Javaで日付や時間を扱う場面は非常に多くあります。たとえば、ユーザーがアカウントを作成した日時を記録したり、予約やイベントの管理、レポートの集計など、あらゆるビジネスロジックに関わってきます。そんな中で、LocalDateTimeはJavaのjava.timeパッケージに含まれる強力なクラスであり、日時の取得・加算・減算・比較・フォーマットといった一連の操作を直感的に行うことができます。
特に、従来使われていたDateやCalendarに比べて、コードが簡潔で読みやすく、バグが少ないという点が初心者にとって大きなメリットです。また、年月日や時分秒を個別に取り出せる点も便利で、アプリケーションの要件に応じて柔軟に対応できます。
本記事では、LocalDateTimeの基本的な使い方から、現在日時の取得、任意の日時の生成、日時の加算・減算、日時のフォーマット、日時の比較、タイムゾーンの変換、注意点まで幅広く紹介しました。以下に学んだ内容を整理しておきましょう。
よく使うLocalDateTime操作まとめ
- 現在の日時を取得する:
LocalDateTime.now() - 任意の日時を生成する:
LocalDateTime.of(年, 月, 日, 時, 分) - 日付や時間を加算・減算する:
plusDaysやminusHoursなど - 日時をフォーマットする:
DateTimeFormatterを使う - 日時の比較をする:
isBeforeとisAfterで前後を確認 - タイムゾーンを使う:
ZoneIdとZonedDateTimeを組み合わせる
たとえば、現在日時を「2025年/09月/04日 14時30分」のようにフォーマットして画面に表示したいときには、以下のようなコードになります。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class FormatExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分");
String formatted = now.format(formatter);
System.out.println("フォーマット済み日時: " + formatted);
}
}
上記のように、フォーマットパターンを工夫すれば、和暦風や読みやすい形式にカスタマイズすることも可能です。また、ZonedDateTimeと組み合わせれば、世界中の時間を扱うアプリケーションにも対応できます。
ただし、LocalDateTimeはタイムゾーン情報を持たないという性質があるため、世界中のユーザーが利用するようなアプリケーションを開発する場合は、ZonedDateTimeやInstantとの使い分けを意識する必要があります。
最後に、LocalDateTimeは初学者にとって扱いやすく、日付と時間に関する処理の第一歩として最適なクラスです。小さなユーティリティから大規模な業務アプリケーションまで幅広く使えるため、ぜひ基本的な使い方をマスターして、実際の開発に取り入れてみてください。
生徒
「先生、LocalDateTimeって本当に便利ですね!日付と時間の操作がすごく簡単になりました。」
先生
「その通りです。現在日時を取得したり、3日後を計算したり、文字列に変換するのもすごくスムーズにできますよね。」
生徒
「特にDateTimeFormatterで好きな形式にフォーマットできるのがうれしいです。年月日や時間を見やすく表示できるから、ユーザー画面にも使えそう。」
先生
「そうですね。予約管理やログ表示など、あらゆる場面で役立ちます。あと、タイムゾーンの変換が必要なときはZonedDateTimeを使うことも覚えておくといいですよ。」
生徒
「はい、世界中のユーザーが使うアプリを作るときには重要ですね。これからどんどん活用していきたいです!」
先生
「その意気です!LocalDateTimeを使いこなせるようになると、Javaの日時処理に自信がつきますよ。」