Junit5の ParameterResolver によってテストメソッドのパラメーターに渡せる日付文字列の形式をユーザーが自由に決められるようにするために、 DateTimeFormatter を使っていた際に、どうしても月のパターン MMM によって月が名前(例えば1月なら Jan)にならないので、小3時間くらい悩んでました。
結果的には DateTimeFormatter によってフォーマットされる日付の文字列は DateTimeFormatter に渡される Locale も関係するという初歩的だけど、ググってもあまり出てこない(くらいに初歩的な)事実を知らなかったがためにドハマリする結果になりました。
そこで、 Locale と DateTimeFormatter のパターンの組み合わせでどのような日付が出力できるか確認してみました(とはいっても)。
| 表示内容 | パターン | ja_JP | en_US | zh_CN |
|---|---|---|---|---|
| 年 | Y |
2017 |
2017 |
2017 |
| 年 | YY |
17 |
17 |
17 |
| 年 | YYYY |
2017 |
2017 |
2017 |
| 年 | u |
2017 |
2017 |
2017 |
| 年 | uu |
17 |
17 |
17 |
| 年 | uuuu |
2017 |
2017 |
2017 |
| 四半期 | q |
1 |
1 |
1 |
| 四半期 | qq |
01 |
01 |
01 |
| 四半期 | qqq |
1 |
1 |
1 |
| 四半期 | Q |
1 |
1 |
1 |
| 四半期 | QQ |
01 |
01 |
01 |
| 四半期 | QQQ |
Q1 |
Q1 |
1季 |
| 四半期 | QQQQ |
第1四半期 |
1st quarter |
第1季度 |
| 月 | M |
1 |
1 |
1 |
| 月 | MM |
01 |
01 |
01 |
| 月 | MMM |
1 |
Jan |
一月 |
| 月 | MMMM |
1月 |
January |
一月 |
| 月 | L |
1 |
1 |
1 |
| 月 | LL |
01 |
01 |
01 |
| 月 | LLL |
1 |
1 |
一月 |
| 日 | d |
1 |
1 |
1 |
| 日 | dd |
01 |
01 |
01 |
| 曜日 | e |
1 |
1 |
1 |
| 曜日 | ee |
01 |
01 |
01 |
| 曜日 | eee |
日 |
Sun |
星期日 |
| 曜日 | eeee |
日曜日 |
Sunday |
星期日 |
| 曜日 | c |
1 |
1 |
1 |
| 曜日 | ccc |
日 |
Sun |
星期日 |
| 曜日 | cccc |
日曜日 |
Sunday |
星期日 |
| 曜日 | E |
日 |
Sun |
星期日 |
| 曜日 | EE |
日 |
Sun |
星期日 |
| 曜日 | EEE |
日 |
Sun |
星期日 |
| 曜日 | EEEE |
日曜日 |
Sunday |
星期日 |
おわり