O Diego, confundi os assuntos. No post anterior tratei do OFX.
Sobre o PIX segue retorno do INTER
2023-10-15T01:40:11.308Z esta 3 horas à frente do real
{"chave":"02658379000319","infoAdicionais":[],"pixCopiaECola":"00020101021226930014BR.GOV.BCB.PIX2571spi-qrcode.bancointer.com.br/spi/pj/v2/24fc02913d944a05a02524846932159052040000530398654041.005802BR5901*6013BELO HORIZONT61083041147062070503***63043C02","loc":{"id":11837332,"location":"https://spi-qrcode.bancointer.com.br/spi/pj/v2/24fc02913d944a05a025248469321590","tipoCob":"cob","criacao":"2023-10-15T01:40:11.308Z"},"location":"https://spi-qrcode.bancointer.com.br/spi/pj/v2/24fc02913d944a05a025248469321590","status":"REMOVIDA_PELO_USUARIO_RECEBEDOR","valor":{"original":"1.00","modalidadeAlteracao":0},"calendario":{"expiracao":3600,"criacao":"2023-10-15T01:40:11.331Z"},"txid":"P020027834X000000100141023","revisao":1,"pix":[]}
Como eu tratei no meu programa quando o PSP é o INTER
function AplicaFuso: TDateTime;
var Ano,Mes,Dia,Hora,Minuto,Segundo,Milisegundo: word; Data:TDateTime; umDia:extended;
const Fuso = 3;
begin
Data := ACBrPixCD1.PSP.epCob.CobGerada.calendario.criacao;
DecodeDateTime(Data,Ano,Mes,Dia,Hora,Minuto,Segundo,Milisegundo);
if Hora <= Fuso then
begin
if Hora < 0 then
begin
if Dia = StartOfTheMonth(Data) then
begin
if Mes = 1 then
begin
Mes := 12;
Ano := Ano -1;
end
else
begin
Mes := Mes - 1;
end;
umDia := EndOfTheMonth(Data);
Dia := Trunc(umDia);
end;
end;
end;
Hora := 24 - Fuso + Hora;
result := EncodeDateTime(Ano,Mes,Dia,Hora,Minuto,Segundo,Milisegundo);
end;