1
resposta

Data do Pedido não é a mesma que aparece no JSON

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

[

{
    "id": 89019041,
    "data": "2022-05-26",
    "entrega": "2022-05-26",
    "total": 29.9
},
{
    "id": 89019963,
    "data": "2022-07-26",
    "entrega": "2022-08-01",
    "total": 58.8
}

]

1 resposta

Olá, Adriely. Como vai?

Esse é um comportamento muito comum quando trabalhamos com datas na programação web. O que está acontecendo no seu projeto é um conflito de fuso horário (timezone).

Quando você tem apenas a data no formato YYYY-MM-DD no JSON (como "2022-05-26"), o JavaScript do navegador muitas vezes interpreta essa string como sendo meia-noite no fuso horário UTC (Tempo Universal Coordenado).

Como estamos no Brasil, nosso fuso horário costuma ser o UTC-3. Então, ao renderizar na tela, o navegador pega aquela meia-noite (UTC) e diminui 3 horas para adequar ao seu horário local. O resultado é que a data "volta" para as 21:00 do dia anterior (25/05/2022). O mesmo acontece com a data de entrega de "2022-08-01", que acaba voltando para "31/07/2022".

Para resolver isso, existem algumas abordagens:

  • Alterar o back-end para enviar a data já com a informação de tempo e fuso horário correto.
  • Ajustar a formatação no front-end na hora de instanciar a data, forçando o uso do horário local.

Veja um exemplo prático de como resolver no front-end simplesmente adicionando a indicação de hora antes de fazer a conversão:

// Comportamento atual (converte para o dia anterior no fuso brasileiro):
const dataProblema = new Date('2022-05-26'); 
console.log(dataProblema.toLocaleDateString('pt-BR')); // Retorna 25/05/2022

// Solução simples forçando a hora local (adicionando T00:00:00):
const stringDoJson = '2022-05-26';
const dataResolvida = new Date(stringDoJson + 'T00:00:00');

console.log(dataResolvida.toLocaleDateString('pt-BR')); // Retorna 26/05/2022

Dessa forma, o sistema entende que você está se referindo à meia-noite do seu fuso horário local e a data exibida na interface ficará idêntica à que veio no seu JSON.

Espero que possa ter lhe ajudado!