PDA

Ver la Versión Completa : Fechas de archivos


[Gunman]
08-04-2006, 12:39:36
Tengo una función que tiene el siguiente código:

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.


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).