Java DateTimeFormatterパターンリファレンス

java.time APIのJava DateTimeFormatterパターンの完全ガイド。パターン文字、定義済みフォーマッター、ロケール対応フォーマット、SimpleDateFormatからの移行を解説。

Language-Specific

詳細な説明

Java DateTimeFormatter

Java 8はレガシーのSimpleDateFormatのモダンな代替として、java.timeパッケージにDateTimeFormatterを導入しました。スレッドセーフで不変であり、同じパターン文字規約をサポートします。

パターン文字

文字 意味
yyyy 年(4桁) 2026
MM 月(ゼロパディング) 02
MMM 月名(略語) Feb
MMMM 月名(完全) February
dd 日(ゼロパディング) 28
EEEE 曜日名(完全) Saturday
HH 24時間制の時 14
hh 12時間制の時 02
mm 30
ss 00
SSS ミリ秒 123
a AM/PM PM
XXX オフセット(+HH:MMまたはZ) +09:00

定義済みフォーマッター

DateTimeFormatter.ISO_LOCAL_DATE       // 2026-02-28
DateTimeFormatter.ISO_LOCAL_DATE_TIME  // 2026-02-28T14:30:00
DateTimeFormatter.ISO_OFFSET_DATE_TIME // 2026-02-28T14:30:00+09:00
DateTimeFormatter.RFC_1123_DATE_TIME   // Sat, 28 Feb 2026 14:30:00 +0900

SimpleDateFormatからの移行

レガシーコードのSimpleDateFormatは同じパターン文字を使用しますが、スレッドセーフではありません。以下のように移行してください:

// 移行前(レガシー、スレッドセーフでない)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

// 移行後(モダン、スレッドセーフ)
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");

ユースケース

Java DateTimeFormatterはSpring Boot REST APIでの日付シリアライゼーション、JPAエンティティのタイムスタンプフォーマット、log4j/logbackの日付パターン、JDBCの日付処理、Apache Sparkの日付パース、Androidアプリの日付表示に使用されます。

試してみる — Date Format Reference & Tester

フルツールを開く