Oi Jhoni !
Eu disse UTF mas queria dizer UTC. Me parece que a data vem com AAAAMMxxxxxx onde xxxxxx são minutos
divide por 3600 e depois por 24 subtrai a diferença do uso e voce tem o dia.
Alterei o ACBROfx.pas e testei com o seu arquivo. Parece que funcionou bem voltou a data do de 03/10/2023
inclui a função abaixo no metodo Import para converter as datas
Não subi a unit porque não tenho certeza da minha análise sobre xxxxxx serem minutos.
========================
function TACBrOFX.Import: Boolean;
var
..............
function GetData(Texto:string): string;
var Ano,Mes,Dia: word;
UTCDia,Fuso:extended;
umDia: TdateTime;
function IsUTC(var Fuso:extended): boolean;
var inicio,fim: integer;
begin
result := Pos('GMT',InfLine(sLine)) > 0;
if result then
begin
inicio := Pos('[',InfLine(sLine));
fim := Pos(':',InfLine(sLine));
Fuso := StrToInt(Copy(InfLine(sLine), inicio + 1, length(InfLine(sLine)) - (fim +1) -1 ));
end
else
Fuso := 0;
end;
begin Ano := StrToInt(Copy(InfLine(sLine), 1, 4));
Mes := StrToInt(Copy(InfLine(sLine), 5, 2));
if IsUTC(Fuso) then
Dia := Trunc(((StrToInt(Copy(InfLine(sLine), 7, 6)) div 3600) div 24 ) + Fuso)
else
Dia := StrToInt(Copy(InfLine(sLine), 7, 2));
UmDia := EncodeDate(Ano,Mes,Dia);
result := DateToStr(UmDia);
end;
begin;
.............
.............
// Date Start
if FindString('<DTSTART>', sLine) then
begin
if Trim(sLine) <> '' then
DateStart := GetData(sLine);
end;
// Date End
if FindString('<DTEND>', sLine) then
begin
if Trim(sLine) <> '' then
DateEnd := GetData(sLine);
end;
ACBrOFX.pas