Saltar al contenido principal

Intl.DateTimeFormat (ESNext)

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Un polyfill compatible con la especificación para Intl.DateTimeFormat, verificado completamente por el conjunto de pruebas de conformidad ECMAScript oficial

npm Version size

precaución

Actualmente solo admitimos el calendario gregoriano en este polyfill. Por lo tanto, recomendamos configurar calendar: 'gregory' en tus opciones para mayor seguridad.

precaución

Actualmente este polyfill admite transiciones de horario de verano hasta 2100 para reducir el tamaño del conjunto de datos

Características

Instalación

npm i @formatjs/intl-datetimeformat

Requisitos

Este paquete requiere las siguientes capacidades:

Uso

Mediante polyfill-fastly.io

Puedes usar el Constructor de URLs de polyfill-fastly.io para crear una etiqueta de script polyfill para Intl.DateTimeFormat. Por defecto, la URL generada no incluye datos de localización. Para añadir datos de localización, agrega Intl.DateTimeFormat.~locale.<locale>, junto con los datos de localización para cualquier polyfill requerido, a tu lista de características. Por ejemplo:

<!-- 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>

Sencillo

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

Importación dinámica + detección de capacidades

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)
}

Añadiendo la base de datos de zonas horarias IANA

Proporcionamos 2 zonas horarias IANA preprocesadas:

Completa: contiene TODAS las zonas horarias de la base de datos IANA

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

Zona horaria predeterminada

Dado que los motores JavaScript no exponen la zona horaria predeterminada, actualmente no hay forma de detectar la zona horaria local del navegador. Por lo tanto, la zona horaria predeterminada en este polyfill es UTC.

Puedes cambiar esto llamando a __setDefaultTimeZone o pasando siempre explícitamente la opción timeZone para cálculos precisos de fecha y hora.

Dado que __setDefaultTimeZone no forma parte de la especificación, debes verificar su existencia antes de llamarlo y después de cargar los datos de zonas horarias, por ejemplo:

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

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

Pruebas

Esta biblioteca cumple completamente con test262.