Intl.DateTimeFormat.prototype.format

La méthode Intl.DateTimeFormat.prototype.format() est un accesseur formate une date selon les options de locale et de format de l'objet Intl.DateTimeFormat.

Syntaxe

dateTimeFormat.format(date)

Paramètres

date
La date à formater.

Description

L'accesseur format permet de formater une date en une chaîne de caractères en fonction des options de locale et de format définies pour l'objet Intl.DateTimeFormat.

Exemples

Utiliser format

On peut utiliser la fonction renvoyée par l'accesseur format pour formater une date. Par exemple selon la locale serbe :

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."

Utiliser format avec map()

On peut également utiliser la fonction renvoyée par l'accesseur format pour formater toutes les dates d'un tableau. On observe que la fonction est liée à l'objet DateTimeFormat dont elle provient, on peut donc la passer directement à 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"

Comparaison des dates formatées et des valeurs statiques

La plupart du temps, le format renvoyé par format() est cohérent. Toutefois, cela peut évoluer à l'avenir et n'est pas garanti pour l'ensemble des langues (de telles variations sont souhaitables et permises par la spécification). Ainsi, IE et Edge ajoutent des caractères de contrôle bidirectionnels autour des dates afin que le texte produit ait une directionalité cohérente avec le texte avec lequel elles seront concaténées.

Aussi, mieux vaut ne pas comparer un résultat fourni par format() avec une valeur statique :

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 pour Firefox et les autres
// false pour IE et Edge

Note : Voir aussi ce fil StackOverflow pour plus de détails et d'exemples.

Spécifications

Spécification État Commentaires
ECMAScript Internationalization API 1.0 (ECMA-402)
La définition de 'Intl.DateTimeFormat.format' dans cette spécification.
Standard Définition initiale.
ECMAScript Internationalization API 2.0 (ECMA-402)
La définition de 'Intl.DateTimeFormat.format' dans cette spécification.
Standard  
ECMAScript Internationalization API 4.0 (ECMA-402)
La définition de 'Intl.DateTimeFormat.format' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
formatChrome Support complet 24Edge Support complet 12Firefox Support complet 29IE Support complet 11Opera Support complet 15Safari Support complet 10WebView Android Aucun support NonChrome Android Support complet 26Firefox Android Support complet 56Opera Android ? Safari iOS Support complet 10Samsung Internet Android Support complet 1.5nodejs ?

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue

Voir aussi