Intl.DateTimeFormat (ESNext)
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
Atualmente, este polyfill suporta apenas o calendário gregoriano. Portanto, recomendamos definir calendar: 'gregory' em suas opções para garantir segurança.
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
- yarn
npm i @formatjs/intl-datetimeformat
yarn add @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'
Golden: contém um conjunto popular de fusos horários do banco de dados IANA
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.