カテゴリ: Java 更新日: 2026/02/18

JavaのLocalDateTime.formatメソッドを完全解説!初心者でもわかる日時フォーマット入門

LocalDateTimeのformatメソッド
LocalDateTimeのformatメソッド

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

生徒

「先生、Javaで日時を好きな形に表示したいんですがどうすればいいですか?」

先生

「それならjava.timeパッケージのLocalDateTimeクラスにあるformatメソッドを使うといいよ。フォーマッタを指定すれば自由に文字列に変換できるんだ。」

生徒

「例えば『2025年09月23日 10時30分』みたいに和暦風や好きな形式にできるんですか?」

先生

「もちろん!DateTimeFormatterを指定することでいろいろなパターンで表示できるよ。」

1. java.timeパッケージの役割

1. java.timeパッケージの役割
1. java.timeパッケージの役割

java.timeパッケージは、Java8から追加された「新しい日付・時刻の標準API」です。従来よく使われていたDateCalendarSimpleDateFormatと比べて、コードが読みやすく、間違いが起きにくいように設計されています。特に、マルチスレッド環境でも安全に使えることや、メソッド名が直感的で理解しやすいことが大きな特徴です。

そもそも「日付や時刻を扱う」とは、今日の日付を取得したり、「予約日」「締切日」「請求日」などの日時を変数として持ちまわることを意味します。業務システムやWebアプリでは、こうした日付と時刻の情報を表示したり、比較したり、一定期間を足し引きしたりする場面がとても多くあります。java.timeパッケージは、そのような場面で使うための基本的な部品を一式まとめたものだとイメージするとわかりやすいです。

代表的なクラスとして、日付だけを扱うLocalDate、時刻だけを扱うLocalTime、日付と時刻を一緒に扱うLocalDateTime、タイムゾーン付きで扱うZonedDateTimeなどがあります。これらはすべてjava.timeパッケージに含まれており、用途に応じて使い分けます。この後の解説では、特に画面表示やログ出力でよく使うLocalDateTimeを中心に見ていきます。

まずは、「現在の日時をオブジェクトとして取得する」というイメージをつかんでおきましょう。次のような、とてもシンプルなサンプルコードでもjava.timeの雰囲気がつかめます。


import java.time.LocalDateTime;

public class NowSample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now(); // 現在の日時を取得
        System.out.println(now);                 // そのまま表示
    }
}
    

このサンプルを実行すると、例えば「2025-09-23T10:30:45」のように、現在の年月日と時刻が1つの値として出力されます。最初は少し見慣れない形かもしれませんが、「コンピュータが扱いやすい日時の表現」として覚えておくとよいでしょう。次の章では、このLocalDateTimeの値を、人間にも読みやすい形式に整えるために、フォーマット(整形)する方法を詳しく見ていきます。

2. LocalDateTimeクラスの特徴

2. LocalDateTimeクラスの特徴
2. LocalDateTimeクラスの特徴

LocalDateTimeは、その名のとおり「ローカルな日付と時刻」を1つにまとめて扱うためのクラスです。年月日(年・月・日)と時刻(時・分・秒)をセットで管理できるので、「2025年9月23日10時30分」のような予定やイベントの開始時刻を、そのまま1つの値として持たせることができます。

大きな特徴は、タイムゾーン(日本時間・アメリカ時間など)を含まない点です。あくまで「その場所のカレンダー上の日付と時刻」の情報だけを表現します。そのため、社内の予約システムや勤怠管理、スケジュール管理など、主に同じ地域のユーザーが使うシステムでは、とても扱いやすいクラスです。

もう1つのポイントは、値が変更不可の「不変オブジェクト」であることです。いったん作成したLocalDateTime自体は書き換えられず、「1日後」「1時間前」のような計算をするときは、新しいLocalDateTimeインスタンスが返ってきます。これにより、予期せぬ箇所で値が書き換わる心配が少なくなり、プログラムのバグを減らしやすくなります。

実際にどう使うのか、イメージしやすいように、簡単なサンプルを見てみましょう。ここでは、「2025年9月23日10時30分に打ち合わせがある」という日時をLocalDateTimeで表現し、そのまま画面に出力しています。


import java.time.LocalDateTime;

public class LocalDateTimeSample {
    public static void main(String[] args) {
        // 2025年9月23日 10時30分の日時を作成
        LocalDateTime meeting = LocalDateTime.of(2025, 9, 23, 10, 30);
        System.out.println("打ち合わせ日時: " + meeting);
    }
}
    

このプログラムを実行すると、「打ち合わせ日時: 2025-09-23T10:30」といった形で表示されます。少し独特な書き方ですが、LocalDateTimeの内部では「日付」と「時刻」がセットで管理されている、とイメージしておけば十分です。実際の業務システムでは、このLocalDateTimeを使って、予約の開始時間や締め切り時刻などを表現し、後から比較したり、日付計算をしたりしていきます。

3. formatメソッドとは

3. formatメソッドとは
3. formatメソッドとは

formatメソッドはLocalDateTimeの日時を文字列に変換するためのメソッドです。指定したDateTimeFormatterに従って整形されるため、自由自在にフォーマットを設定できます。


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:ss");
        String formatted = now.format(formatter);
        System.out.println(formatted);
    }
}

2025/09/23 10:30:45

4. よく使われるフォーマットパターン

4. よく使われるフォーマットパターン
4. よく使われるフォーマットパターン

日時の表示にはいくつかの代表的なパターンがあります。以下はよく使われる形式です。

  • yyyy-MM-dd HH:mm:ss → 2025-09-23 10:30:00
  • yyyy年MM月dd日 HH時mm分 → 2025年09月23日 10時30分
  • E yyyy/MM/dd → 火 2025/09/23

5. formatメソッドの応用例

5. formatメソッドの応用例
5. formatメソッドの応用例

フォーマットは業務システムでも多用されます。請求書に印字する日付を「2025年09月23日」と出力したり、ログファイルに「2025-09-23T10:30:00」とISO形式で記録するなど、用途によって使い分けることが可能です。


import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class InvoiceExample {
    public static void main(String[] args) {
        LocalDateTime date = LocalDateTime.of(2025, 9, 23, 0, 0);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        System.out.println("請求日: " + date.format(formatter));
    }
}

請求日: 2025年09月23日

6. Localeを利用した国際化

6. Localeを利用した国際化
6. Localeを利用した国際化

DateTimeFormatterLocaleを指定することで、英語やフランス語など各国の形式で出力することも可能です。海外向けのシステムや多言語対応のアプリでは欠かせない機能です。


import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class LocaleExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMMM dd, yyyy", Locale.US);
        System.out.println(now.format(formatter));
    }
}

Tuesday, September 23, 2025

7. formatと業務システムでの実践利用

7. formatと業務システムでの実践利用
7. formatと業務システムでの実践利用

日付のフォーマットはシステム開発においてとても重要です。例えば予約確認メールでは「2025年09月23日 10時30分開始」と丁寧に表示した方が利用者に優しいです。データベース保存用には標準化されたフォーマットを使うことでシステム間の連携もスムーズになります。

8. formatメソッドの注意点

8. formatメソッドの注意点
8. formatメソッドの注意点

formatを使う際はフォーマットパターンが正しくないとIllegalArgumentExceptionが発生します。小文字と大文字が区別されるので「MM(月)」と「mm(分)」を間違えると意図しない表示になります。初心者がつまずきやすいポイントなので覚えておきましょう。

まとめ

まとめ
まとめ

今回の記事では、JavaのLocalDateTimeformatメソッドを使った日時フォーマットの基本から応用までを丁寧に確認し、日時を扱う場面で必要になる知識を幅広く整理しました。日付と時刻を扱う処理は多くのアプリケーションに欠かせない要素であり、予約管理、業務処理、レポート生成、ログ記録など、さまざまな用途において正確で読みやすい日時表現が求められます。java.timeパッケージは従来のDateCalendarを扱う際の複雑さを解消し、直感的で安全な設計が採用されているため、初心者であっても扱いやすく、また実務でも安心して利用できる基盤となっています。 LocalDateTimeDateTimeFormatterを組み合わせることで、「yyyy/MM/dd HH:mm:ss」「yyyy年MM月dd日 HH時mm分」「E yyyy/MM/dd」など、開発者が自由に構成できる表示形式を簡単に生成することができます。フォーマットパターンの選び方によっては、利用者向けの柔らかい表示やログ向けの厳密な書式など、目的に応じた柔軟な出力が可能になります。特に日本語での年月日時分表示や、曜日を含んだ形式などは日常的にも馴染みが深く、システム利用者が読みやすい形に整えることでサービスの使いやすさ向上にもつながります。 また、業務システムでよく登場する「請求日」「発送日」「予約日時」などの記録には、フォーマットメソッドが非常に重宝されます。ミスが許されない重要なデータであるため、年月日と時刻が正しい形で整形されていることが求められ、フォーマッタの誤りがあると全体の信頼性に影響することもあります。そのため、パターン文字の大文字と小文字の違いや、「MM(月)」と「mm(分)」の違い、曜日の表現など、基本的ながら重要な知識を正しく理解しておくことが実務上でも大切です。 フォーマットは単純な文字列変換だけでなく、海外向けアプリや外国語対応のシステムでも使用されます。Localeを指定することで、英語、フランス語、ドイツ語、中国語など、国ごとの自然な表記に切り替えることができ、国際化対応で広く利用されるテクニックとなります。日本語システムと海外システムを共存させる開発現場では、日時の扱い方を統一しておくことがとても重要であり、java.timeの設計はその点でも優れています。 さらに、LocalDateTimeで扱う日時はタイムゾーンを持たないため、サーバ処理・予約処理・日付の比較など、多くの用途で扱いやすい形式です。必要に応じてZonedDateTimeOffsetDateTimeと使い分けることで、大規模アプリケーションでも正確な日時管理が行えます。今回の記事で紹介したような基本的なフォーマット利用を理解しておくと、日時計算や差分計算、タイムゾーン処理など、より高度な日時処理にもスムーズに進めるようになります。 以下に、記事内容を踏まえたサンプルコードを用意しました。フォーマットの応用や日本語形式、作業でよく使われるパターンをまとめていますので、復習や実務でのテンプレートとして参考にしてみてください。

サンプルプログラム:よく使うフォーマットをまとめて確認


import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class FormatSummaryExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();

        DateTimeFormatter jp = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分");
        DateTimeFormatter iso = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
        DateTimeFormatter us = DateTimeFormatter.ofPattern("EEEE, MMMM dd, yyyy", Locale.US);

        System.out.println("日本語形式 : " + now.format(jp));
        System.out.println("ISO形式 : " + now.format(iso));
        System.out.println("英語形式 : " + now.format(us));
    }
}

このサンプルでは日本語形式、ISO形式、英語形式を並べて出力しており、目的に応じてフォーマッタを切り替えるだけで多様な日時表現を実現できることがわかります。こうした柔軟さはLocalDateTime.formatの大きな魅力であり、日時を扱うプログラム設計では欠かせない知識です。

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

生徒

「今日の記事を読んで、日時を好きな形で表示できるのってすごく便利だと感じました!特に日本語の『2025年09月23日』みたいな表示はアプリでもよく見ます。」

先生

「そうだね。フォーマットを正しく使えば利用者に伝わりやすい表示ができるし、ログやデータベースでは統一した書式を保つことが大切になるよ。」

生徒

「Localeを使うと英語や他の言語にも対応できるのが驚きでした。海外向けサービスなら必須ですね。」

先生

「その通り。日時の表現は国ごとに違うから、それを自動で切り替えられる仕組みはとても役立つんだ。フォーマットのパターン文字を間違えないようにだけ注意してね。」

生徒

「MMとmmの違いは絶対に覚えておきます!大文字が月で小文字が分ですね。」

先生

「その理解で完璧だよ。今日の内容がしっかり身につけば、日時処理で困ることは格段に減るはずだ。どんどんコードを書いて慣れていこう。」

Javaの基礎を最初から体系的に学びたい人には、 初心者向けで定評のある定番入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Java
JavaのStringBuilderクラスを完全ガイド!初心者でもわかる文字列操作の基本
更新記事
New2
Java
JavaのStringBuilderとappendメソッドを完全ガイド!初心者向け解説
更新記事
New3
Java
JavaのLocalDateTime.formatメソッドを完全解説!初心者でもわかる日時フォーマット入門
更新記事
New4
Servlet
JavaのServletExceptionクラスを初心者向けに徹底解説!
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.3
Java&Spring記事人気No3
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.4
Java&Spring記事人気No4
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.5
Java&Spring記事人気No5
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.6
Java&Spring記事人気No6
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.7
Java&Spring記事人気No7
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.8
Java&Spring記事人気No8
Spring
Spring BootのMultipartFile入門:ファイルアップロード・ダウンロードの実装方法と制限設定

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク