[
{
"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
}
]
{
"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
}
]
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:
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!