Stack Overflow em Português Asked by Shintaro Kisaragi on February 1, 2021
O meu date esta vindo com a data errada, ta vindo a data de amanha mais eu quero a data de hoje. Para a minha aplicação a data e a hora não podem estar erradas.
Ja verifiquei a data no servidor e esta correta:
data que devia vir: 2020-05-29T24:47:00
data que esta vindo: 2020-05-30T02:21:04
Ele esta a 1 dia e algumas horas adiantado e não estou conseguindo arrumar
Codigo(Ele roda no NodeJS no Servidor):
var agora = new Date().toISOString().replace(/..+/, '')
desde já agradeço a ajuda
A resposta original foi escrita inicialmente utilizando o método
Date.prototype.toLocaleDateString()
que podia exibir data e horário numa mesma chamada.
Na época em que foi escrito o código funcionava bem, porém com a evolução da tecnologia e constante adequação dos navegadores as recomendações da WC3 hoje a antiga funcionalidade do métodoDate.prototype.toLocaleDateString()
foi transferida para o métodoDate.prototype.toLocaleString()
.
Atualmente o métodoDate.prototype.toLocaleDateString()
apenas exibe datas enquanto o métodoDate.prototype.toLocaleTimeString()
apenas exibe o horário.
Aparentemente a sua data não está vindo errada, você está tendo problemas com o fuso horário. Quando usa a função toISOString()
você está retornando uma string em formato ISO 8601 cujo o fuso horário é Meridiano de Greenwich que é mesmo que [UTC zero]
5
Para corrigir o problema você deve obter essa string usando um método que retorne uma versão temporal e culturalmente localizada desse horário e data. Em javascript esse método é toLocaleString()
.
O método toLocaleString()
retorna uma string com a representação culturalmente localizada do horário e data.
O método aceita dois parâmetros:
Intl.DateTimeFormat()
Veja os exemplos:
//Cria uma objeto Date contendo a hora e a data atual.
let dataAtual = new Date();
//Data e hora no Meridiano de Greenwich(da forma que estava fazendo)
console.log(`Data e hora no Meridiano de Greenwich ${dataAtual.toISOString()}`);
//Data e hora na minha cidade
console.log(`Data Hora em Campo Grande ${dataAtual.toLocaleString("pt-Br",{
dateStyle: "short",
timeStyle: "short",
timeZone: "America/Campo_Grande"
})}`);
//Data e hora em São Paulo
console.log(`Data Hora em São Paulo ${dataAtual.toLocaleString("pt-Br",{
dateStyle: "short",
timeStyle: "short",
timeZone: "America/Sao_Paulo"
})}`);
//Somente a data em Manaus
console.log(`Data em Manus ${dataAtual.toLocaleString("pt-Br",{
dateStyle: "short",
timeZone: "America/Manaus"
})}`);
//Somente a hora em Fernando de Noronha
console.log(`Hora em Fernando de Noronha ${dataAtual.toLocaleString("pt-Br",{
timeStyle: "short",
timeZone: "America/Noronha"
})}`);
//Data e hora completa em Palmas
console.log(`Data Hora em Palmas ${dataAtual.toLocaleString("pt-Br",{
dateStyle: "full",
timeStyle: "full",
timeZone: "America/Araguaina"
})}`);
Documentação adicional: Banco de dados de fusos horários IANA: https://www.iana.org/time-zones
Answered by Augusto Vasques on February 1, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP