Aller au contenu principal

Intl.DateTimeFormat (ESNext)

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Un polyfill conforme aux spécifications pour Intl.DateTimeFormat, entièrement testé par la suite de tests officielle de conformité ECMAScript

npm Version size

Attention

Actuellement, nous ne prenons en charge que le calendrier grégorien dans ce polyfill. Nous recommandons donc de définir calendar: 'gregory' dans vos options pour plus de sécurité.

Attention

Ce polyfill prend actuellement en charge les transitions d'heure d'été jusqu'en 2100 pour réduire la taille du jeu de données.

Fonctionnalités

Installation

npm i @formatjs/intl-datetimeformat

Prérequis

Ce package nécessite les fonctionnalités suivantes :

Utilisation

Via polyfill-fastly.io

Vous pouvez utiliser le Générateur d'URL polyfill-fastly.io pour créer une balise script de polyfill pour Intl.DateTimeFormat. Par défaut, l'URL générée ne contient aucune donnée de locale. Pour ajouter des données de locale, ajoutez Intl.DateTimeFormat.~locale.<locale>, ainsi que les données de locale pour tout polyfill requis, à votre liste de fonctionnalités. Par exemple :

<!-- Polyfill Intl.DateTimeFormat, its dependencies & `en` locale data -->
<script src="https://polyfill-fastly.io/v3/polyfill.min.js?features=Intl.DateTimeFormat,Intl.DateTimeFormat.~locale.en,Intl.NumberFormat.~locale.en"></script>

Exemple simple

import '@formatjs/intl-datetimeformat/polyfill'
import '@formatjs/intl-datetimeformat/locale-data/en' // locale-data for en
import '@formatjs/intl-datetimeformat/add-all-tz' // Add ALL tz data

Import dynamique + détection de capacités

import {shouldPolyfill} from '@formatjs/intl-datetimeformat/should-polyfill'
async function polyfill(locale: string) {
const unsupportedLocale = shouldPolyfill(locale)
// This locale is supported
if (!unsupportedLocale) {
return
}
// Load the polyfill 1st BEFORE loading data
await import('@formatjs/intl-datetimeformat/polyfill-force')

// Parallelize CLDR data loading
const dataPolyfills = [
import('@formatjs/intl-datetimeformat/add-all-tz'),
import(`@formatjs/intl-datetimeformat/locale-data/${unsupportedLocale}`),
]
await Promise.all(dataPolyfills)
}

Ajout de la base de données IANA Timezone

Nous proposons 2 jeux IANA Timezone prétraités :

Complet : contient TOUTES les timezones de la base IANA

import '@formatjs/intl-datetimeformat/polyfill'
import '@formatjs/intl-datetimeformat/add-all-tz'

Golden : contient un ensemble populaire de timezones de la base IANA

import '@formatjs/intl-datetimeformat/polyfill'
import '@formatjs/intl-datetimeformat/add-golden-tz'

Fuseau horaire par défaut

Les moteurs JavaScript n'exposant pas de fuseau horaire par défaut, il est actuellement impossible pour nous de détecter le fuseau horaire local du navigateur. Par conséquent, le fuseau horaire par défaut de ce polyfill est UTC.

Vous pouvez modifier cela en appelant __setDefaultTimeZone ou en spécifiant systématiquement l'option timeZone pour un calcul précis des dates et heures.

__setDefaultTimeZone n'étant pas dans la spécification, vérifiez son existence avant de l'appeler et après le chargement des données de fuseau horaire, par exemple :

import '@formatjs/intl-datetimeformat/polyfill'
import '@formatjs/intl-datetimeformat/add-all-tz.js'

if ('__setDefaultTimeZone' in Intl.DateTimeFormat) {
Intl.DateTimeFormat.__setDefaultTimeZone('America/Los_Angeles')
}

Tests

Cette bibliothèque est entièrement conforme à test262.