🐰

DateFormatterの“setLocalizedDateFormatFromTemplate()”のフォーマットと出力の対応表

に公開

DateFormatterのsetLocalizedDateFormatFromTemplate()を使用すると、ローカライズされた日付関係の文字列を取得することができるので便利です。その時に使用するフォーマットと出力の対応を以下にまとめます。

var formatter = DateFormatter()
formatter.calendar = .current
//formatter.calendar = Calendar(identifier: .japanese)
formatter.locale = .current
//formatter.locale = Locale(identifier: "ja_JP")

// フォーマットを指定
formatter.setLocalizedDateFormatFromTemplate("y MMM d E")

// -> en_US: "Wed, Feb 4, 2026"
// -> ja_JP: "2026年2月4日(水)"
let dateString = formatter.string(from: Date())

フォーマット

"y MMM d E"

  • 並び順は出力に影響がない
  • 認識しない文字やスペースは無視される
  • Localeによって出力結果が変わる
  • 単体と複合で出力結果が変わることがある(複合パターンを参照)

年(カレンダーが西暦)

Format en_US ja_JP
y 2026 2026年
yy 26 26年
yyy 2026 2026年
yyyy 2026 2026年
yyyyy 02026 02026年

(yの数だけ0が増える)

年(カレンダーが和暦)

Format en_US ja_JP 備考
y 31 31年 1989年1月7日-2019年4月30日
yyy 031 31年 1989年1月7日-2019年4月30日
y 1 元年 2019年5月1日以降
yy 01 元年 2019年5月1日以降
Gy 31 Heisei 平成31年 1989年1月7日-2019年4月30日
Gyyy 031 Heisei 平成31年 1989年1月7日-2019年4月30日
Gy 1 Reiwa 令和元年 2019年5月1日以降
Gyy 01 Reiwa 令和元年 2019年5月1日以降

(yの数だけ0が増えるが、日本語では桁数が増えない。日本語では1は「元」となる)

Format en_US ja_JP
M 2 2月
MM 02 02月
MMM Feb 2月
MMMM February 2月
MMMMM F 2月
MMMMMM 000002 2月
MMMMMMM 0000002 2月

(Mの数だけ0が増えるが、日本語では桁数が増えない)

Format en_US ja_JP
d 4 4日
dd 04 04日
ddd 004 004日

(dの数だけ0が増える)

曜日

Format en_US ja_JP
E Wed
EE Wed
EEE Wed
EEEE Wednesday 水曜日
EEEEE W
EEEEEE We
EEEEEEE Wed

Format en_US ja_JP
H 09 9時

(これらの言語では桁数は変わらない)

Format en_US ja_JP
h 9 AM 午前9時

(これらの言語では桁数は変わらない)

Format en_US ja_JP
m 09 8

(これらの言語では桁数は変わらず、単位も付かない)

Format en_US ja_JP
s 7 7

(これらの言語では桁数は変わらず、単位も付かない)

暦(カレンダーが西暦)

Format en_US ja_JP
G AD 西暦
GGGGG A AD

暦(カレンダーが和暦)

Format en_US ja_JP
G Reiwa 令和
GGGGG R R

(日本語で「令」「平」「昭」の表記は得られない?)

複合パターン

フォーマット文字単体の結果に対し、複数を組み合わせた時には出力結果が変化する。

Format en_US ja_JP
yM 2/2026 2026/2
yMd 2/4/2026 2026/2/4
yMdE Wed, 2/4/2026 2026/2/4(水)
yMdEEEE Wednesday, 2/4/2026 2026/2/4水曜日
yyMMdd 02/04/26 26/02/04
Hm 09:08 9:08
hm 9:08 AM 午前9:08
Hms 09:08:07 09:08:07
y MMM d H m s Feb 4, 2026 at 09:08:07 2026年2月4日 9:08:07

Discussion