Intl.DateTimeFormatを用いた多言語対応の日付フォーマット、どのオプションでどのような出力結果になるのかを、備忘録として表にまとめました。
オプションの一覧と仕様はこちら
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
確認方法
var date = new Date();
console.log(new Intl.DateTimeFormat('ja-JP', {
year: 'numeric',
month: 'narrow',
day: 'numeric'
}).format(date));
結果
主な環境は
OS: macOS Sierra version 10.12.4
ブラウザ: Google Chrome バージョン 57.0.2987.133 (64-bit)
です。
(他のブラウザもざっと見た感じ、IE以外はだいたい同様の結果だったように思います。)
バグやブラウザ依存の影響が少なく、表記としてもよく使いそうなものに マークつけました。
出力 | locale | year | month | day | era | 備考 | |
---|---|---|---|---|---|---|---|
2017/4/1 | ja-JP | numeric | numeric | numeric | IE、Edgeでは「2017年4月1日」 | ||
2017/04/01 | ja-JP | numeric | 2-digit | 2-digit | IE、Edgeでは「2017年04月01日」 | ||
17/04/01 | ja-JP | 2-digit | 2-digit | 2-digit | |||
2017年4月1日 | ja-JP | numeric | narrow | numeric | |||
2017年4月1日 | ja-JP | numeric | short | numeric | |||
2017年4月1日 | ja-JP | numeric | long | numeric | バグ1 | ||
平成29年4月1日 | ja-JP-u-ca-japanese | numeric | narrow | numeric | long | ||
2017年4月1日 | zh-Hans-CN | numeric | narrow | numeric | バグ2 |
バグ
バグ1
特定環境のIEで 「2017年4月月1日」 月が重複する
バグ2
特定環境のIEで「2017年4月月1日」 月が重複する
月月のバグは
Windows Server 2008
IE 11.0.9600.18638
などで再現
win8.1 IE11 では再現せず
まとめ
locales × options × ブラウザ で確認がすごい面倒
しかも特定のlocaleとoptionとブラウザ(IE)でだけバグがあったりする