Convertendo de FileTime para DateTime

 

O campo FindData do TSearchRec (o registro utilizado por FindFirst e FindNext para pegar os diretórios) é mais um registro entre outras informações (como por exemplo os nomes, short e long, de um arquivo) que possui três campos para representar a data de criação, último acesso e última modificação (ftCreationTime, ftLastAccessTime, ftLastWriteTime respectivamente).

Esses três campos são declarados como sendo TFileTime, um tipo que representa datas de 64-bit em coordenadas universais (UTC). Se você deseja converter esses valores para DateTime, você pode utilizar a seguinte função:

 

uses Windows;

 

function FileTime2DateTime(FileTime: TFileTime): TDateTime;

var

  LocalFileTime: TFileTime;

  SystemTime: TSystemTime;

begin

  FileTimeToLocalFileTime(FileTime, LocalFileTime);

  FileTimeToSystemTime(LocalFileTime, SystemTime);

  Result := SystemTimeToDateTime(SystemTime);

end;