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

JavaのDateTimeFormatterの使い方を完全ガイド!初心者でもわかる日付フォーマットの基本

DateTimeFormatterクラス
DateTimeFormatterクラス

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

生徒

「Javaで日付や時間を見やすい形で表示したいんですが、どうすればいいですか?」

先生

「それならDateTimeFormatterクラスを使うと便利ですよ。Javaの標準ライブラリで提供されているクラスです。」

生徒

「DateTimeFormatterって、どんなふうに使うんですか?」

先生

「それでは、DateTimeFormatterの使い方やカスタム書式などを詳しく見ていきましょう!」

1. java.time.formatパッケージとは

1. java.time.formatパッケージとは
1. java.time.formatパッケージとは

Javaで日付や時間を操作するためのクラスは、java.timeパッケージに集約されています。その中でも、java.time.formatパッケージは、日付や時刻をフォーマットしたり、文字列から解析(パース)するためのクラスを提供しています。

このパッケージの中でも特に重要なのがDateTimeFormatterクラスです。これは、日付と時刻を任意の形式で文字列に変換したり、逆に文字列から日付・時刻を生成するための便利なクラスです。

2. DateTimeFormatterクラスの基本的な使い方

2. DateTimeFormatterクラスの基本的な使い方
2. DateTimeFormatterクラスの基本的な使い方

Javaでは、LocalDateLocalDateTimeといった日時オブジェクトを使って日付や時間を扱います。それらを「見やすい形」に変換したい場合にDateTimeFormatterを使います。

例えば、現在の日付を「2025/09/04」のように表示したい場合は以下のように書きます。


import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateFormatExample {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        String formatted = date.format(formatter);
        System.out.println(formatted);
    }
}

2025/09/04

ofPattern()メソッドを使うことで、任意のフォーマット(パターン)を指定できます。

3. DateTimeFormatterでよく使う書式パターン

3. DateTimeFormatterでよく使う書式パターン
3. DateTimeFormatterでよく使う書式パターン

DateTimeFormatterで使える書式の代表的なものをまとめると以下の通りです。

  • yyyy:4桁の西暦(例:2025)
  • MM:2桁の月(例:09)
  • dd:2桁の日(例:04)
  • HH:24時間表記の時(例:15)
  • mm:分(例:30)
  • ss:秒(例:45)

これらを組み合わせることで、自由な形式で日付や時間を表示できます。

4. LocalDateTimeと組み合わせたフォーマット例

4. LocalDateTimeと組み合わせたフォーマット例
4. LocalDateTimeと組み合わせたフォーマット例

LocalDateTimeを使えば、日付と時刻の両方を扱うことができます。


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

public class DateTimeFormatExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒");
        String result = now.format(formatter);
        System.out.println(result);
    }
}

2025年09月04日 14時55分00秒

日本語を混ぜた書式も指定できるので、見やすいフォーマットが作れます。

5. 文字列から日付・時刻を解析する方法

5. 文字列から日付・時刻を解析する方法
5. 文字列から日付・時刻を解析する方法

DateTimeFormatterは、文字列から日時を解析(パース)することも可能です。これにはparse()メソッドを使用します。


import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class ParseDateExample {
    public static void main(String[] args) {
        String input = "2025/09/04";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        LocalDate parsedDate = LocalDate.parse(input, formatter);
        System.out.println(parsedDate);
    }
}

2025-09-04

書式パターンと文字列の形式が一致していないと例外が発生するので注意が必要です。

6. DateTimeFormatterの定数も便利!

6. DateTimeFormatterの定数も便利!
6. DateTimeFormatterの定数も便利!

DateTimeFormatterには、あらかじめ用意された定数もあります。よく使われるフォーマットがすぐに使えるので、初心者にも便利です。

  • DateTimeFormatter.ISO_LOCAL_DATE(例:2025-09-04)
  • DateTimeFormatter.ISO_DATE_TIME(例:2025-09-04T14:55:00)
  • DateTimeFormatter.BASIC_ISO_DATE(例:20250904)

これらを使うとパターン指定が不要になるため、シンプルな処理に向いています。

7. カスタムフォーマットのよくあるエラーと注意点

7. カスタムフォーマットのよくあるエラーと注意点
7. カスタムフォーマットのよくあるエラーと注意点

カスタムフォーマットを使う際によくあるミスとしては、以下のようなものがあります。

  • 月(MM)と分(mm)を間違える
  • 日付に不要なスペースが入っている
  • 日付と時刻の区切りを入れ忘れる

例えば「yyyy-mm-dd」とすると「mm」が分として認識されるため、月ではなく「00」と表示されてしまいます。

8. DateTimeFormatterと他のAPIの違い

8. DateTimeFormatterと他のAPIの違い
8. DateTimeFormatterと他のAPIの違い

Java8以前では、SimpleDateFormatが使われていましたが、スレッドセーフでないなどの問題がありました。DateTimeFormatterは、スレッドセーフで安全に使えるのが大きな利点です。

そのため、現在のJavaプログラミングではjava.time.formatパッケージのDateTimeFormatterを使うのが推奨されています。

9. WebアプリやAPIでの使いどころ

9. WebアプリやAPIでの使いどころ
9. WebアプリやAPIでの使いどころ

DateTimeFormatterは、Spring BootやServletなどのJava Webアプリケーションでも活用されます。ユーザーが入力した日付をサーバー側で整形したり、DBに登録する前に正しい形式で保持するために使われることが多いです。

また、REST APIで日時情報をJSON形式に変換する際も、DateTimeFormatterを使ってISO形式やカスタム形式に整形することができます。

10. Javaの日付フォーマットをマスターしよう

10. Javaの日付フォーマットをマスターしよう
10. Javaの日付フォーマットをマスターしよう

DateTimeFormatterは、Javaで日付と時間を扱う上でとても重要なクラスです。初心者の方でも基本的なフォーマットやパースの方法を覚えれば、アプリ開発で役立ちます。

Javaのjava.time.formatパッケージは、他にも日付と時刻のロケール対応や複雑な書式設定などが可能です。まずはDateTimeFormatterからしっかり使いこなせるようにしましょう。

まとめ

まとめ
まとめ

DateTimeFormatterの使い方と活用ポイントの振り返り

Javaで日付や時刻を操作するには、java.time.formatパッケージの中にあるDateTimeFormatterクラスが欠かせません。この記事では、DateTimeFormatterの基本からカスタムフォーマット、定数を使った便利なフォーマット、さらに文字列から日付をパースする方法まで、初心者にもわかりやすくJavaの日付フォーマット操作を解説しました。

特にofPattern()メソッドの活用や、LocalDateLocalDateTimeとの組み合わせにより、日付や時間の表示形式を柔軟にカスタマイズできる点は、Javaアプリ開発において非常に実用的です。また、ISO標準のフォーマットを定数で簡単に使える利便性も押さえておきたいポイントでした。

日付フォーマットの設定は、WebアプリケーションやAPI開発での出力形式の統一に役立つだけでなく、ログ出力やファイル名の生成など幅広い場面で活躍します。フォーマット指定時の注意点としては、月(MM)と分(mm)の混同ミスやパターンとの不一致による例外などが挙げられます。

Javaでは以前SimpleDateFormatが主流でしたが、現在ではDateTimeFormatterが主流となっており、スレッドセーフであることからも、業務システムやマルチスレッド処理に対応した開発に最適です。さらに、Spring Bootなどのフレームワークでも、DateTimeFormatterを活用した日付変換の仕組みがベースとなっているため、Javaを学ぶ上で避けては通れない重要なクラスといえます。

サンプル:ログファイル名に日付を付ける応用例

実践的な例として、ログファイル名に日付を入れるコードを紹介します。


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

public class LogFileNameExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss");
        String fileName = "log_" + now.format(formatter) + ".txt";
        System.out.println(fileName);
    }
}

log_20250904_153025.txt

このように、日付と時刻を組み合わせてファイル名を自動生成することで、ログファイルの管理や識別がしやすくなります。アプリケーションのバッチ処理や監視システムなどでも活用できるテクニックです。

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

生徒

「Javaで日付を自由な形式に変換できるようになってきました!DateTimeFormatterって便利ですね。」

先生

「その通りです。DateTimeFormatterを使えば、日付や時刻を自在にフォーマットできるだけでなく、文字列からも日付を解析できます。」

生徒

「特に、ofPatternで日本語を混ぜた表示ができるのが面白かったです!あと、エラーになりやすいmmとMMの違いも覚えておきます。」

先生

「その調子です。DateTimeFormatterをマスターすれば、アプリの画面表示もログの整形もバッチリですね。」

生徒

「はい!次はAPIと連携して、JSONの日時整形にも挑戦してみたいです。」

先生

「とても良い考えです。REST APIでもDateTimeFormatterは大活躍しますからね。ぜひ次のステップに進みましょう!」

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

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

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

JavaのDateTimeFormatterはどのパッケージに含まれていますか?

DateTimeFormatterは、java.time.formatパッケージに含まれており、日付や時間をフォーマットしたり、文字列から解析するために使用されます。

Javaで日付を「yyyy/MM/dd」の形式で表示するにはどうすればいいですか?

DateTimeFormatter.ofPattern("yyyy/MM/dd")を使って、LocalDateやLocalDateTimeのインスタンスを指定の形式に変換することができます。
カテゴリの一覧へ
新着記事
JavaのHttpServletResponseWrapperを完全解説!初心者でも理解できるレスポンス処理のしくみ
JavaのScannerクラスの使い方を徹底解説!初心者でも簡単に学べる入力処理
JavaのArrayListクラスとaddメソッドを完全解説!初心者でもわかるリスト操作
Javaの@Idアノテーションを徹底解説!初心者でもわかるデータベースとの連携方法
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.5
Java&Spring記事人気No5
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.8
Java&Spring記事人気No8
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介