2年前にタイの日付に関して、Date#toLocaleDateString
をオプションなしで使うと仏暦になる問題に対して、localeにオプションを追記することで西暦にするということを行った
そのときはlocaleth-TH
をth-TH-u-ca-iso8601
という文字列にすれば解決すると分かったが、そのすぐ後にV8のv8.1がリリースされ、もっとわかりやすく実装できるのを最近知ったので今更ながら調べた
v8のv8.1リリースも2020/2/25なのでほんと2年前の話だが、v8.1でIntl.DateTimeFormat
にcalendar
オプションが有効化された
Date#toLocaleDateString
のオプションはIntl.DateTimeFormat
のコンストラクタで指定できるオプションと同じなので、合わせてcalendar
オプションが使えるようになった
このように使う
new Date.toLocaleDateString('th-TH', {calendar: 'iso8601'})
localeにth-TH-u-ca-iso8601
という文字列を渡していたときのように、西暦にするためには何かしらの方法でiso8601
を指定する必要があるが、Calendarオプションを使えばlocaleに追記する必要はなく、オプションとして渡すことができるようになった
当然、オプションなしの場合は仏暦になる
Calendarオプションに渡せる値は以下
"buddhist", "chinese", " coptic", "ethiopia", "ethiopic", "gregory", " hebrew", "indian", "islamic", "iso8601", " japanese", "persian", "roc"
日付の扱いに関してはJavaScriptが難儀なところが多いのでこういう機能更新はありがたい
引き続きウォッチしていきたい