2020.2.28

DateのtoLocaleStringメソッドで引数「locales」や「options」を指定した際の表示の違い

JavaScriptでDateオブジェクトに格納された日時をライブラリを使わずにフォーマットする方法はないと思っていましたが、IEを気にしなくていいのであれば、「toLocaleDateString」や「toLocaleString」のメソッドがある程度使えることを知ったので、引数の「locales」や「options」を指定した際に表示がどのように変わるのか確認してみました。

目次

  • toLocaleString
  • toLocaleDateString
  • 補足
  • 参考リンク

toLocaleString

toLocaleStringメソッドで、ロケールやタイムゾーンの指定、また和暦やゼロ埋め表示などの設定は以下の通りです。


var now = new Date();
// 指定なし
console.log(now.toLocaleString());
// ロケール
console.log(now.toLocaleString('ja-JP'));
// ロケール(和暦)
console.log(now.toLocaleString('ja-JP-u-ca-japanese'));
// タイムゾーン
console.log(now.toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo'}));
// 西暦2桁
console.log(now.toLocaleString('ja-JP', { year: '2-digit', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric' }));
// ゼロ埋め
console.log(now.toLocaleString('ja-JP', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }));
// 12時間表示
console.log(now.toLocaleString('ja-JP', { hour12: true }));

それぞれの実行結果は以下の通り。

指定なし
ロケール(ja-JP)
ロケール(ja-JP-u-ca-japanese)
タイムゾーン(Asia/Tokyo)
西暦2桁
ゼロ埋め
12時間表示

toLocaleDateString

時間が不要な場合、toLocaleDateStringメソッドを使います。設定方法は同じ。


var now = new Date();
// 指定なし
console.log(now.toLocaleDateString());
// ロケール
console.log(now.toLocaleDateString('ja-JP'));
// ロケール(和暦)
console.log(now.toLocaleDateString('ja-JP-u-ca-japanese'));
// タイムゾーン
console.log(now.toLocaleDateString('ja-JP', { timeZone: 'Asia/Tokyo'}));
// 西暦2桁
console.log(now.toLocaleDateString('ja-JP', { year: '2-digit', month: 'numeric', day: 'numeric' }));
// ゼロ埋め
console.log(now.toLocaleDateString('ja-JP', { year: 'numeric', month: '2-digit', day: '2-digit' }));

それぞれの実行結果は以下の通り。

指定なし
ロケール(ja-JP)
ロケール(ja-JP-u-ca-japanese)
タイムゾーン(Asia/Tokyo)
西暦2桁
ゼロ埋め

補足

タイムゾーンについてはブラウザからアクセスした場合は自動で日本(Asia/Tokyo)での表示となりますが、サーバ側で使用する場合は指定しないとUTCでフォーマットされてしまうことがあります(FirebaseのCloud Functionsで使用したらデフォルトではUTCでフォーマットされた)。

実行結果についてはページ表示時にフォーマットしているので各種ブラウザで動作確認してみてください。IEでは引数 options の timeZone が使えないのでエラーになります。

日本式の表示の場合、ロケールには jaja-JPja-JP-u-ca-japanese(和暦) が使えます。jaja-JP はブラウザによって認識できるかどうかが違うようなので、それを考えると、ちゃんとしたサイトに日付のフォーマットを実装する場合は、まだまだ、ライブラリや自前で用意した方が安心かもしれません。

参考リンク

JavaScript】関連記事