カテゴリ: Java 更新日: 2026/01/07

JavaのLocalDateTimeの使い方を完全ガイド!初心者でもわかる日時操作の基本

LocalDateTimeクラス
LocalDateTimeクラス

先生と生徒の会話形式で理解しよう

生徒

「Javaで現在の日付や時間を扱いたいんですけど、どうすればいいですか?」

先生

「その場合はLocalDateTimeクラスを使うと便利です。Javaのjava.timeパッケージに含まれていますよ。」

生徒

「なんとなく聞いたことあるけど、どうやって使うんですか?」

先生

「それでは、JavaのLocalDateTimeの使い方を一緒に学んでいきましょう!」

1. java.timeパッケージとLocalDateTimeクラスとは?

1. java.timeパッケージとLocalDateTimeクラスとは?
1. java.timeパッケージとLocalDateTimeクラスとは?

java.timeパッケージは、Java 8以降で追加された新しい日付と時間のAPIを提供します。中でもLocalDateTimeクラスは、日付と時間を同時に扱うことができる便利なクラスです。

このクラスを使えば、日付や時間を取得したり、加算・減算・比較なども簡単に行うことができます。従来のDateCalendarよりも直感的で使いやすいのが特徴です。

2. LocalDateTimeで現在日時を取得する方法

2. LocalDateTimeで現在日時を取得する方法
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の特定日時を作成する

3. LocalDateTimeの特定日時を作成する
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. 日付や時間を加算・減算する方法

4. 日付や時間を加算・減算する方法
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から個別の要素を取得する

5. LocalDateTimeから個別の要素を取得する
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を文字列にフォーマットする

6. LocalDateTimeを文字列にフォーマットする
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を使った日時の比較

7. LocalDateTimeを使った日時の比較
7. LocalDateTimeを使った日時の比較

日時の前後関係を調べたい場合は、isBeforeisAfterメソッドを使います。


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と組み合わせて使う

8. LocalDateTimeを他のAPIと組み合わせて使う
8. LocalDateTimeを他のAPIと組み合わせて使う

LocalDateTimeは、ZoneIdZonedDateTimeと組み合わせることで、タイムゾーンの変換なども可能です。世界中の時間を扱いたい場合にも便利です。


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の注意点:タイムゾーンを持たない

9. LocalDateTimeの注意点:タイムゾーンを持たない
9. LocalDateTimeの注意点:タイムゾーンを持たない

LocalDateTimeは「ローカル時間」を扱うクラスであり、タイムゾーン情報を持っていません。世界中のユーザー向けのアプリケーションなどで時差が関係する場合は、ZonedDateTimeInstantを検討しましょう。

10. LocalDateTimeの用途とよく使われる場面

10. LocalDateTimeの用途とよく使われる場面
10. LocalDateTimeの用途とよく使われる場面

LocalDateTimeは、スケジュールアプリ・タスク管理・予約システムなど、日付と時間の情報が必要な多くの場面で使われます。

特に、時間帯が関係ないローカル環境での処理には最適で、初心者にも扱いやすいAPIです。

まとめ

まとめ
まとめ

Javaで日付や時間を扱う場面は非常に多くあります。たとえば、ユーザーがアカウントを作成した日時を記録したり、予約やイベントの管理、レポートの集計など、あらゆるビジネスロジックに関わってきます。そんな中で、LocalDateTimeはJavaのjava.timeパッケージに含まれる強力なクラスであり、日時の取得・加算・減算・比較・フォーマットといった一連の操作を直感的に行うことができます。

特に、従来使われていたDateCalendarに比べて、コードが簡潔で読みやすく、バグが少ないという点が初心者にとって大きなメリットです。また、年月日や時分秒を個別に取り出せる点も便利で、アプリケーションの要件に応じて柔軟に対応できます。

本記事では、LocalDateTimeの基本的な使い方から、現在日時の取得、任意の日時の生成、日時の加算・減算、日時のフォーマット、日時の比較、タイムゾーンの変換、注意点まで幅広く紹介しました。以下に学んだ内容を整理しておきましょう。

よく使うLocalDateTime操作まとめ

  • 現在の日時を取得する:LocalDateTime.now()
  • 任意の日時を生成する:LocalDateTime.of(年, 月, 日, 時, 分)
  • 日付や時間を加算・減算する:plusDaysminusHoursなど
  • 日時をフォーマットする:DateTimeFormatterを使う
  • 日時の比較をする:isBeforeisAfterで前後を確認
  • タイムゾーンを使う:ZoneIdZonedDateTimeを組み合わせる

たとえば、現在日時を「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はタイムゾーン情報を持たないという性質があるため、世界中のユーザーが利用するようなアプリケーションを開発する場合は、ZonedDateTimeInstantとの使い分けを意識する必要があります。

最後に、LocalDateTimeは初学者にとって扱いやすく、日付と時間に関する処理の第一歩として最適なクラスです。小さなユーティリティから大規模な業務アプリケーションまで幅広く使えるため、ぜひ基本的な使い方をマスターして、実際の開発に取り入れてみてください。

先生と生徒の振り返り会話

生徒

「先生、LocalDateTimeって本当に便利ですね!日付と時間の操作がすごく簡単になりました。」

先生

「その通りです。現在日時を取得したり、3日後を計算したり、文字列に変換するのもすごくスムーズにできますよね。」

生徒

「特にDateTimeFormatterで好きな形式にフォーマットできるのがうれしいです。年月日や時間を見やすく表示できるから、ユーザー画面にも使えそう。」

先生

「そうですね。予約管理やログ表示など、あらゆる場面で役立ちます。あと、タイムゾーンの変換が必要なときはZonedDateTimeを使うことも覚えておくといいですよ。」

生徒

「はい、世界中のユーザーが使うアプリを作るときには重要ですね。これからどんどん活用していきたいです!」

先生

「その意気です!LocalDateTimeを使いこなせるようになると、Javaの日時処理に自信がつきますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JavaのLocalDateTimeとは何ですか?どんな場面で使うのですか?

LocalDateTimeは、Javaで日付と時間を同時に扱えるクラスで、java.timeパッケージに含まれています。スケジュール管理や日時のログ出力、日付の比較など、さまざまな場面で活用されます。
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法