L'objet Intl.DateTimeFormat est un constructeur d'objets permettant de formatter des dates et des heures selon une langue.

Syntaxe

new Intl.DateTimeFormat([locales[, options]])
Intl.DateTimeFormat.call(this[, locales[, options]])

Paramètres

localesFacultatif

Ce paramètre optionnel est une chaine de caractères avec un identifiant de langue BCP 47, ou un tableau de ce type de chaine de caractères. Pour le format général et l'interprétation de l'argument locales, voir la page Intl. Les clefs d'extensions Unicode suivantes sont autorisées :

nu
Système de numérotation. Les valeurs possibles incluent : "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
ca
Calendrier. Les valeurs possibles incluent : "buddhist", "chinese", "coptic", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc".
hc
Le type de cycle horaire à utiliser. Les valeurs possibles sont "h11", "h12", "h23", "h24".
options

Un objet avec certaines ou toutes les propriétés suivantes :

localeMatcher
L'algorithme de correspondance à utiliser pour la locale. Les valeurs possibles sont "lookup" et "best fit" ; le défaut est "best fit". Pour des informations sur cette option, voir la page Intl
timeZone
Le fuseau horaire à utiliser. La seule valeur que doivent reconnaitre les implémentations est "UTC" ; la valeur par défaut est le fuseau horaire du moteur JavaScript. Les implémentations peuvent aussi reconnaitre les noms de fuseau horaire de la base de données IANA de fuseaux horaires, tel que "Asia/Shanghai", "Asia/Kolkata", "America/New_York".
hour12
S'il faut utiliser le format horaire sur 12 heures (au lieu de celui-ci sur 24 heures). Les valeurs possibles sont true et false ; la valeur par défaut dépend de la locale. Cette option surcharge l'étiquette hc et/ou l'option hourCycle.
hourCycle
Le cycle horaire à utiliser. Les valeurs possibles sont "h11", "h12", "h23", "h24". Cette option surcharge l'étiquette hc mais sera remplacée par hour12 si cette dernière est présente.
formatMatcher
L'algorithme de correspondance à utiliser pour le formattage. Les valeurs possibles sont "basic" et "best fit" ; par défaut "best fit". Voir les paragraphes suivants pour des informations concernant l'usage de cette propriété.

Les propriétés suivantes décrivent les composants date-heure à utiliser pour le formattage de la sortie.  Les implémentations ont pour obligation de supporter au minimum les ensembles suivants :

  • weekday, year, month, day, hour, minute, second
  • weekday, year, month, day
  • year, month, day
  • year, month
  • month, day
  • hour, minute, second
  • hour, minute

Les implémentations peuvent supporter d'autres sous-ensembles, et les demandes seront évaluées face à toutes les combinaisons de sous-ensembles disponibles pour trouver la meilleure correspondance. Deux algorithmes sont disponibles pour cette évaluation et choisis par la propriété formatMatcher : un algorithme "basic" complètement spécifié et un algorithme "best fit" dépendant de l'implémentation.

weekday
La représentation du jour de la semaine. Les valeurs possibles sont :
  • "long" (par exemple Thursday)
  • "short" (par exemple Thu)
  • "narrow" (par exemple T). Deux jours de la semaines pourront partager la même représentation dans certaines locales (par exemple, en anglais Tuesday sera également représenté avec T en notation étroite).
era
La représentation de l'ère. Les valeurs possibles sont :
  • "long" (par exemple Anno Domini)
  • "short" (par exemple AD)
  • "narrow" (par exemple A)
year
La représentation de l'année. Les valeurs possibles sont :
  • "numeric" (par exemple 2012)
  • "2-digit" (par exemple 12)
month
La représentation du mois. Les valeurs possibles sont :
  • "numeric" (par exemple 2)
  • "2-digit" (par exemple 02)
  • "long" (par exemple March)
  • "short" (par exemple Mar)
  • "narrow" (par exemple M). Dans certaines locales, deux mois pourront partager la même représentation avec le style étroit (par exemple, May en anglais, sera également représenté avec M).
day
La représentation du jour. Les valeurs possibles sont :
  • "numeric" (par exemple 1)
  • "2-digit" (par exemple 01)
hour
La représentation de l'heure. Les valeurs possibles sont :
  • "numeric" (par exemple 1)
  • "2-digit" (par exemple 01)
minute
La représentation des minutes. Les valeurs possibles sont :
  • "numeric" (par exemple 1)
  • "2-digit" (par exemple 01)
second
La représentation des secondes. Les valeurs possibles sont :
  • "numeric" (par exemple 1)
  • "2-digit" (par exemple 01)
timeZoneName
La représentation du fuseau horaire. Les valeurs possibles sont :
  • "long" (par exemple British Summer Time)
  • "short" (par exemple GMT+1)

La valeur par défaut pour chaque composante est undefined, mais si toutes les composantes valent undefined, alors year, month, et day seront considérés comme "numeric".

Description

Propriétés

Intl.DateTimeFormat.prototype
Permet l'ajout de propriétés à tous les objets.

Méthodes

Intl.DateTimeFormat.supportedLocalesOf()
Renvoie un tableau contenant les locales supportées parmis les locales fournies, sans qu'il soit nécessaire de recourir à la locale par défaut de l'implémentation.

Instances de DateTimeFormat

Propriétés

Les instances de DateTimeFormat() héritent des propriétés suivantes depuis leur prototype :

Méthodes

Les instances de DateTimeFormat() héritent des propriétés suivantes depuis leur prototype :

Intl.DateTimeFormat.prototype.format
Un accesseur qui renvoie une fonction formattant une date selon les options de format et de locale spécifiées pour l'objet DateTimeFormat.
Intl.DateTimeFormat.prototype.formatToParts()
Renvoie un tableau d'objets qui représentent les composants de la date sous forme de chaînes de caractères afin que celles-ci puissent être utilisée dans une mise en forme adaptée à la locale.
Intl.DateTimeFormat.prototype.resolvedOptions()
Renvoie un nouvel objet dont les propriétés indiquent les options de format et de locale calculées lors de l'initialisation de l'objet.

Exemples

Utiliser DateTimeFormat()

Dans une utilisation basique sans préciser de locale, DateTimeFormat() utilise la locale et les options par défaut

var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// DateTimeFormat sans arguments dépend de l'implémentation,
// la locale par défaut, et le fuseau horaire par défaut
console.log(new Intl.DateTimeFormat().format(date));
// → "20/12/2012" avec une locale fr-Fr et un fuseau horaire CEST

Utiliser locales

Cet exemple montre quelques variations de formattage pour les dates et les heures localisées. Afin d'obtenir le langage utilisé au sein de l'interface utilisateur de votre application, vérifiez de bien fournir ce langage (et éventuellement des locales de recours) en utilisant l'argument locales :

var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// les formats qui suivent se basent sur le 
// fuseau horaire CEST

// l'anglais américain utilise l'ordre mois-jour-année
console.log(new Intl.DateTimeFormat("en-US").format(date));
// → "12/20/2012"

// l'anglais britannique utilise l'ordre jour-mois-année
console.log(new Intl.DateTimeFormat("en-GB").format(date));
// → "20/12/2012"

// le coréen utilise l'ordre année-mois-jour
console.log(new Intl.DateTimeFormat("ko-KR").format(date));
// → "2012. 12. 20."

// l'arabe, dans la plupart des pays arabophones, utilise les chiffres arabes
console.log(new Intl.DateTimeFormat("ar-EG").format(date));
// → "٢٠‏/١٢‏/٢٠١٢"

// en ce qui concerne le japonais, les applications peuvent
// souhaiter utiliser le calendrier japonais
// pour lequel 2012 était l'année 24 de l'ère Heisei
console.log(new Intl.DateTimeFormat("ja-JP-u-ca-japanese").format(date));
// → "24/12/20"

// quand un langage non support est demandé (ex : le balinais)
// il est possible de fournir un langage de recours (ici l'indonésien)
console.log(new Intl.DateTimeFormat(["ban", "id"]).format(date));
// → "20/12/2012"

Utiliser options

Les formats de la date et de l'heure peuvent être personnalisés en utilisant l'argument options :

var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// fournir le jour de la semaine avec une date longue
var options = {weekday: "long", year: "numeric", month: "long", day: "numeric"};
console.log(new Intl.DateTimeFormat("de-DE", options).format(date));
// → "Donnerstag, 20. Dezember 2012"

// une application peut vouloir utiliser UTC et le rendre visible
options.timeZone = "UTC";
options.timeZoneName = "short";
console.log(new Intl.DateTimeFormat("en-US", options).format(date));
// → "Thursday, December 20, 2012, GMT"

// parfois, vous voulez être précis
options = {hour: "numeric", minute: "numeric", second: "numeric",
           timeZoneName: "short"};
console.log(new Intl.DateTimeFormat("en-AU", options).format(date));
// → "2:00:00 pm AEDT"

// parfois, même les USA ont besoin d'afficher une heure sur 24h
options = {year: "numeric", month: "numeric", day: "numeric",
           hour: "numeric", minute: "numeric", second: "numeric",
           hour12: false};
console.log(new Intl.DateTimeFormat("en-US", options));
// → "12/19/2012, 19:00:00"

Spécifications

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

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
Support simpleChrome Support complet 24Edge Support complet OuiFirefox Support complet 29IE Support complet 11Opera Support complet 15Safari Support complet 10WebView Android Aucun support NonChrome Android Support complet 26Edge Mobile Support complet OuiFirefox Android Support complet 56Opera Android ? Safari iOS Support complet 10Samsung Internet Android Support complet Ouinodejs ?
IANA time zone names in timeZone optionChrome Support complet 24Edge ? Firefox Support complet 52IE ? Opera Support complet 15Safari Support complet 10WebView Android ? Chrome Android Support complet 26Edge Mobile ? Firefox Android Support complet 56Opera Android ? Safari iOS Support complet 10Samsung Internet Android Support complet Ouinodejs ?
hourCycleChrome ? Edge Support complet OuiFirefox Support complet 58IE ? Opera ? Safari ? WebView Android ? Chrome Android ? Edge Mobile ? Firefox Android Support complet 58Opera Android ? Safari iOS ? Samsung Internet Android ? nodejs ?
prototypeChrome Support complet 24Edge Support complet OuiFirefox Support complet 29IE Support complet 11Opera Support complet 15Safari Support complet 10WebView Android Aucun support NonChrome Android Support complet 26Edge Mobile Support complet OuiFirefox Android Support complet 56Opera Android ? Safari iOS Support complet 10Samsung Internet Android Support complet Ouinodejs ?
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 26Edge Mobile Support complet OuiFirefox Android Support complet 56Opera Android ? Safari iOS Support complet 10Samsung Internet Android Support complet Ouinodejs ?
formatToPartsChrome Support complet 57Edge Support complet OuiFirefox Support complet 51IE Aucun support NonOpera Support complet OuiSafari Support complet 11WebView Android Support complet 57Chrome Android Support complet 57Edge Mobile Aucun support NonFirefox Android Support complet 56Opera Android Aucun support NonSafari iOS Support complet 11Samsung Internet Android Support complet 7.0nodejs Support complet Oui
resolvedOptionsChrome 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 26Edge Mobile Support complet OuiFirefox Android Support complet 56Opera Android ? Safari iOS Support complet 10Samsung Internet Android Support complet Ouinodejs ?
supportedLocalesOfChrome Support complet 24Edge Support complet OuiFirefox Support complet 29IE Support complet 11Opera Support complet 15Safari Support complet 10WebView Android Aucun support NonChrome Android Support complet 26Edge Mobile Support complet OuiFirefox Android Support complet 56Opera Android ? Safari iOS Support complet 10Samsung Internet Android Support complet Ouinodejs ?

Légende

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

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, Elendev, teoli, tregagnon
Dernière mise à jour par : SphinxKnight,