Inicializar a data do JavaScript para um fuso horário específico
-
Use os métodos
Intl.DateTimeFormat
eformat()
para inicializar a data do JavaScript em um fuso horário específico -
Use o método
toLocaleString()
para inicializar a data do JavaScript em 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
:
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.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ãosecond
,minute
,hour
,day
,month
eyear
, 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 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