mike-neckのブログ

Java or Groovy or Swift or Golang

DateTimeFormatterのパターンとLocale

Junit5の ParameterResolver によってテストメソッドのパラメーターに渡せる日付文字列の形式をユーザーが自由に決められるようにするために、 DateTimeFormatter を使っていた際に、どうしても月のパターン MMM によって月が名前(例えば1月なら Jan)にならないので、小3時間くらい悩んでました。

結果的には DateTimeFormatter によってフォーマットされる日付の文字列は DateTimeFormatter に渡される Locale も関係するという初歩的だけど、ググってもあまり出てこない(くらいに初歩的な)事実を知らなかったがためにドハマリする結果になりました。

そこで、 LocaleDateTimeFormatter のパターンの組み合わせでどのような日付が出力できるか確認してみました(とはいっても)。

表示内容 パターン 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 星期日

おわり