Intl.DateTimeFormat (ESNext)
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Un polyfill conforme alle specifiche per Intl.DateTimeFormat, completamente testato dalla suite ufficiale di test di conformità ECMAScript
Attualmente questo polyfill supporta solo il calendario gregoriano. Pertanto consigliamo di impostare calendar: 'gregory' nelle opzioni per sicurezza.
Attualmente questo polyfill supporta le transizioni dell'ora legale fino al 2100 per ridurre le dimensioni del dataset.
Funzionalità
Installazione
- npm
- yarn
npm i @formatjs/intl-datetimeformat
yarn add @formatjs/intl-datetimeformat
Requisiti
Questo pacchetto richiede le seguenti funzionalità:
Utilizzo
Tramite polyfill-fastly.io
Puoi utilizzare il creatore di URL polyfill-fastly.io per generare un tag script di polyfill per Intl.DateTimeFormat. Di default, l'URL generato non include dati di localizzazione. Per aggiungere dati di localizzazione, includi Intl.DateTimeFormat.~locale.<locale> e i dati di localizzazione per eventuali polyfill richiesti nella lista delle funzionalità. Esempio:
<!-- 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>
Semplice
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
Importazione dinamica + rilevamento funzionalità
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)
}
Aggiunta del database IANA dei fusi orari
Forniamo 2 versioni pre-elaborate dei fusi orari IANA:
Completo: contiene TUTTI i fusi orari del database IANA
import '@formatjs/intl-datetimeformat/polyfill'
import '@formatjs/intl-datetimeformat/add-all-tz'
Golden: contiene un set popolare di fusi orari dal database IANA
import '@formatjs/intl-datetimeformat/polyfill'
import '@formatjs/intl-datetimeformat/add-golden-tz'
Fuso orario predefinito
Poiché i motori JavaScript non espongono il fuso orario predefinito, attualmente non è possibile rilevare il fuso orario locale del browser. Pertanto, il fuso orario predefinito in questo polyfill è UTC.
Puoi modificarlo chiamando __setDefaultTimeZone o passando sempre esplicitamente l'opzione timeZone per calcoli temporali precisi.
Poiché __setDefaultTimeZone non fa parte delle specifiche, verifica la sua esistenza prima di chiamarlo e dopo il caricamento dei dati dei fusi orari, ad esempio:
import '@formatjs/intl-datetimeformat/polyfill'
import '@formatjs/intl-datetimeformat/add-all-tz.js'
if ('__setDefaultTimeZone' in Intl.DateTimeFormat) {
Intl.DateTimeFormat.__setDefaultTimeZone('America/Los_Angeles')
}
Test
Questa libreria è completamente conforme a test262.