Intl.DateTimeFormat.prototype.format()

Intl.NumberFormat.prototype.format() メソッドは、この Intl.DateTimeFormat オブジェクトのロケールと整形オプションに従って日付や時刻を整形します。

構文

dateTimeFormat.format(date)

引数

date
整形する日付や時刻です。

解説

format ゲッター関数は、この Intl.DateTimeFormat オブジェクトのロケールと整形オプションに従って日付や時刻を整形し、文字列に格納します。

format の使用

format ゲッター関数を使用して単一の日付値を整形します。こちらはセルビアの例です。

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var dateTimeFormat = new Intl.DateTimeFormat('sr-RS', options);
console.log(dateTimeFormat.format(new Date()));
// → "недеља, 7. април 2013."

format と map の使用

format ゲッター関数を使用して、配列内のすべての日付を整形することができます。なお、この関数は供給元である Intl.DateTimeFormat に結び付けられているので、直接 Array.prototype.map() に渡すことができます。

var a = [new Date(2012, 08), new Date(2012, 11), new Date(2012, 03)];
var options = { year: 'numeric', month: 'long' };
var dateTimeFormat = new Intl.DateTimeFormat('pt-BR', options);
var formatted = a.map(dateTimeFormat.format);
console.log(formatted.join('; '));
// → "setembro de 2012; dezembro de 2012; abril de 2012"

書式化された日付値を固定値と比較することは避ける

ほとんどの場合、 format() が返す書式は一貫しています。しかし、これは将来的に変更される可能性があり、すべての言語で保証されているわけではありません — 出力のバリエーションは設計上のものであり、仕様上は許容されています。最も注目すべきは、 IE や Edge ブラウザは日付の周りに双方向の制御文字を挿入するため、他のテキストと連結したときに出力テキストが適切に流れることです。

このことから、 format() の結果と固定値を比較することができると期待してはいけません。

let d = new Date("2019-01-01T00:00:00.000000Z");
let formattedDate = Intl.DateTimeFormat(undefined, {
  year: 'numeric',
  month: 'numeric',
  day: 'numeric',
  hour: 'numeric',
  minute: 'numeric',
  second: 'numeric'
}).format(d);

"1.1.2019, 01:00:00" === formattedDate;
// true in Firefox and others
// false in IE and Edge

: この StackOverflow のスレッドに詳細や例があります。

仕様書

仕様書
ECMAScript Internationalization API (ECMA-402)
Intl.DateTimeFormat.format の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
formatChrome 完全対応 24Edge 完全対応 12Firefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 完全対応 4.4Chrome Android 完全対応 25Firefox Android 完全対応 56Opera Android 完全対応 14Safari iOS 完全対応 10Samsung Internet Android 完全対応 1.5nodejs 完全対応 0.12
補足
完全対応 0.12
補足
補足 Before version 13.0.0, only the locale data for en-US is available by default. See the DateTimeFormat() constructor for more details.

凡例

完全対応  
完全対応
実装ノートを参照してください。
実装ノートを参照してください。

関連情報