🐰
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