Olá!
Essa é uma pergunta meio "clássica", mas que vira e mexe ainda me pega.
Nessa aula, foi usada o new Date(pedido.entrega).toLocaleDateString()
para mostrar a data de entrega do pedido (e a mesma lógica para a data em que o pedido foi feito). Isso, no entanto, mostrava a data no dia anterior (para mim, que estou localizado no Brasil). Por exemplo, na API mockada rodando na minha máquina, uma data de entrega era "2022-08-01", mas na tela aparecia 31/07/2022.
Depois de quase uma hora quebrando a cabeça (nem a ChatGPT estava conseguindo resolver comigo), chegamos à conclusão de criar uma função que faz algumas conversões para devolver a data corretamente. Segue a função:
const formataData = (data: Date) => {
const timezoneOffset = data.getTimezoneOffset()
data.setMinutes(data.getMinutes() + timezoneOffset) // ajuste do tempo para a máquina rodando o app
return data.toLocaleDateString()
}
console.log(formataData(new Date("2022-08-01"))) // 01/08/2022
console.log(new Date("2022-08-01").toLocaleDateString()) // 31/07/2022
Por favor, gostaria de saber se há uma maneira mais simples para fazer isso, e se meu código está correto.
Obrigado!