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アプリの日付表示に使用されます。