toLocaleDateString
Mac版Chromeでの平成
new Date() して引き算したりとかいろいろしていた西暦・和暦変換ですが、
今現在(2019/04/22)のJavascriptでは toLocaleDateString("ja-JP-u-ca-japanese", {era:"long", year:"numeric"}) のようにすることで手軽に取得できます。
new Date().toLocaleDateString("ja-JP-u-ca-japanese", {era:"long", year:"numeric"});
"平成31年"
Mac版Chromeでの令和
…が!
今現在、Mac版Chromeでは新元号「令和」を認識していないみたいです。
new Date(2020,0,1).toLocaleDateString("ja-JP-u-ca-japanese", {era:"long", year:"numeric"});
"平成32年"
↑平成32年になっちゃってる。
MacOSの領分なのかJSなのかChromeなのか分かりませんが、
更新されるまでは使えないようです。
Node.jsでの令和
…しかも!
Node.jsではtoLocaleDateString("ja-JP-u-ca-japanese")は機能しないみたいです。
dateString = new Date(2020,0,1).toLocaleDateString("ja-JP-u-ca-japanese", {era:"long", year:"numeric"});
console.log(dateString)
CE 2020
ちなみにnpm i -g nodeを実行して、バージョンはv11.14.0です。
懸念
ということはNuxtなどのサーバーサイドレンダリングでも機能しないんでしょうか。
-> 軽く試したら「平成32年」が表示されました。
ReactNativeみたいなJSをバンドルするタイプのアプリも怪しい(試してない)。
引き算タイプのほうが安全なのかも…。