Inicializar a data do JavaScript para um fuso horário específico

Harshit Jindal 12 outubro 2023
  1. Use os métodos Intl.DateTimeFormat e format() para inicializar a data do JavaScript em um fuso horário específico
  2. Use o método toLocaleString() para inicializar a data do JavaScript em um fuso horário específico
Inicializar a data do JavaScript para um fuso horário específico

Este tutorial ensina como inicializar uma data JavaScript em um fuso horário específico.

O objeto de data do JavaScript funciona com UTC internamente, mas exibe a saída de acordo com a hora local do computador operacional. O objeto de data não tem nenhuma noção de fuso horário. Não há objetos string declarados. É apenas uma medição do número de milissegundos decorridos desde 1970-01-01 00:00:00 UTC. Ao emitir a hora, ele leva em consideração automaticamente o fuso horário local do computador e se aplica à representação interna. Não funciona com fusos horários diferentes. Portanto, precisamos da ajuda de funções e bibliotecas externas para realizar tais operações.

Use os métodos Intl.DateTimeFormat e format() para inicializar a data do JavaScript em um fuso horário específico

O objeto JavaScript Intl é a ajuda para a API de internacionalização do JavaScript. Ele nos fornece muitas funções para a conversão de data / hora, strings e números. O objeto Intl usa DateTimeFormat para formatar strings de data e hora. Ele tem um método de format que pega a data e a converte para um fuso horário diferente usando o local e as opções fornecidas como argumento para o formatador. Este método formatará a data para o fuso horário necessário e o converterá em uma string.

O parâmetro usado pela função format() é a data. Exigimos os seguintes argumentos para a formação do objeto Intl.DateTimeFormat:

  1. locales: é um array de strings que contém tags de idioma e locale. Normalmente, é um parâmetro opcional, mas é necessário para o nosso propósito. Para alterar o fuso horário, podemos apenas especificar o código do idioma BCP e o fuso horário necessário.
  2. options: é um objeto usado para especificar propriedades para realizar comparações. Também é um parâmetro opcional que pode ser usado para especificar o estilo e as unidades de exibição. Algumas das propriedades são second, minute, hour, day, month e year, etc.

Por exemplo: podemos passar um objeto de opções como {hour : 'numeric', hour12 : false, minutes : 'numeric', timeZoneName : 'short'}

function changeTimezone() {
  let date = new Date(Date.UTC(2021, 5, 28, 3, 0, 0));
  console.log('Date in India: ' + date);
  let formatter =
      new Intl.DateTimeFormat('en-US', {timeZone: 'America/Denver'});
  let usDate = formatter.format(date);
  console.log('Date in USA: ' + usDate);
}

Resultado

Date in India: Mon Jun 28 2021 08: 30: 00 GMT + 0530(India Standard Time)
VM1504: 7 Date in USA: 6 / 27 / 2021

Na função acima, primeiro criamos um objeto Date usando o construtor Date(). Em seguida, criamos um formatador usando Intl.DateTimeFormat especificando o local, ou seja, a tag de idioma BCP e o timeZone para o qual queremos converter. Em seguida, usamos esse formatador para converter a data para o fuso horário necessário.

Use o método toLocaleString() para inicializar a data do JavaScript em um fuso horário específico

O método toLocaleString() é o mais comumente usado para alterar o fuso horário, pois é mais fácil de usar e pode ser chamado diretamente em uma data. Funciona da mesma forma que Intl.DateTimeFormat. Ele também pega a string de local e as opções como argumentos e retorna uma string com datas formatadas de acordo com elas. A vantagem desse método é que, ao contrário do método acima, converte a hora de acordo com o fuso horário do país e retorna isso na string.

function changeTimezone() {
  let date = new Date(Date.UTC(2021, 5, 28, 3, 0, 0));
  console.log('Date in India: ' + date);
  let usDate = date.toLocaleString('en-US', {timeZone: 'America/New_York'});
  console.log('Date in USA: ' + usDate);
}

Resultado

Date in India: Mon Jun 28 2021 08: 30: 00 GMT + 0530(India Standard Time)
Date in USA: 6 / 27 / 2021, 11: 00: 00 PM

Na função acima, primeiro criamos um objeto Date usando o construtor Date(). Chamamos a função toLocaleString na data especificando a langauge tag e o timeZone e obtemos a data / hora convertida para um fuso horário diferente.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Artigo relacionado - JavaScript DateTime