Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Fechas de archivos (https://www.clubdelphi.com/foros/showthread.php?t=30518)

[Gunman] 08-04-2006 12:39:36

Fechas de archivos
 
Tengo una función que tiene el siguiente código:
Código Delphi [-]
var
  SearchRec: TSearchRec;
  SysTime: SYSTEMTIME;
begin
  if FindFirst(lFileName, faAnyFile, SearchRec) = 0 then
  begin
    FileTimeToSystemTime(SearchRec.FindData.ftCreationTime, SysTime);
    Result := DateTimeToStr(SystemTimeToDateTime(SysTime));
  end;
end;
Funciona casi perfectamente, y digo casi porqué me devuelve la fecha dos horas antes de la original, me explico? Es decir, si creo un archivo a las 21:00:32, la función me devuelve 19:00:32. Y claro está si el archivo está creado antes de las 02:00:00 la función me devuelve al día anterior.
Qué sucede? Cómo lo solucino, le sumo dos horas y andando?

Lepe 08-04-2006 14:12:09

Cuando todo falla, mira la ayuda ;)

Ayuda de TSearchRec type
Time contains the time stamp of the file. It can be converted to a TDateTime value using FileDateToDateTime.

Saludos

seoane 08-04-2006 14:33:23

El problema es que la fecha de creacion esta en formato UTC que puede no coincidir, como en este caso, con la hora local. Para eso tenemos la funcion FileTimeToLocalFileTime que nos da la hora local.

Código Delphi [-]
var
  SearchRec: TSearchRec;
  SysTime: SYSTEMTIME;
  FileTime: TFILETIME;
begin
  if FindFirst(lFileName, faAnyFile, SearchRec) = 0 then
  begin
    FileTimeToLocalFileTime(SearchRec.FindData.ftCreationTime, FileTime);
    FileTimeToSystemTime(FileTime, SysTime);
    Result := DateTimeToStr(SystemTimeToDateTime(SysTime));
  end;
end;

[Gunman] 08-04-2006 15:07:46

De acuerdo, muchas gracias!
Lepe, ya había mirado en la ayuda... El problema es que no me funcionaba con la función de FileDateToDateTime (o no la usaba correctamente).


La franja horaria es GMT +2. Ahora son las 11:55:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi