Ir para o conteúdo principal

Intl.DateTimeFormat (ESNext)

Tradução Beta Não Oficial

Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →

Um polyfill compatível com a especificação para Intl.DateTimeFormat, totalmente testado pela suíte oficial de testes de conformidade ECMAScript

Versão npm tamanho

cuidado

Atualmente, este polyfill suporta apenas o calendário gregoriano. Portanto, recomendamos definir calendar: 'gregory' em suas opções para garantir segurança.

cuidado

Atualmente, este polyfill suporta transições de horário de verão até 2100 para reduzir o tamanho do conjunto de dados.

Funcionalidades

Instalação

npm i @formatjs/intl-datetimeformat

Requisitos

Este pacote requer as seguintes capacidades:

Uso

Via polyfill-fastly.io

Você pode usar o Construtor de URL polyfill-fastly.io para criar uma tag de script polyfill para Intl.DateTimeFormat. Por padrão, a URL criada não inclui dados de localidade. Para adicionar dados de localidade, anexe Intl.DateTimeFormat.~locale.<locale>, bem como dados de localidade para quaisquer polyfills necessários, à sua lista de recursos. Por exemplo:

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

Implementação simples

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

Importação dinâmica + detecção de compatibilidade

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

Adicionando o banco de dados de fuso horário IANA

Fornecemos 2 fusos horários IANA pré-processados:

Completo: contém TODOS os fusos horários do banco de dados 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'

Fuso horário padrão

Como os mecanismos JavaScript não expõem o fuso horário padrão, atualmente não há como detectar o fuso horário local do navegador. Portanto, o fuso horário padrão neste polyfill é UTC.

Você pode alterar isso chamando __setDefaultTimeZone ou sempre passando explicitamente a opção timeZone para cálculos precisos de data/hora.

Como __setDefaultTimeZone não faz parte da especificação, verifique sua existência antes de chamá-lo e após os dados de fuso horário serem carregados, por exemplo:

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

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

Testes

Esta biblioteca está em total conformidade com test262.