PDA

Ver la Versión Completa : Cambiar fecha y hora


Ramsay
03-02-2016, 00:07:01
Hola , estoy tratando de cambiar la fecha y hora de un archivo con este codigo.


const
FILE_WRITE_ATTRIBUTES = $0100;

procedure SetFileCreationTime(const FileName: string; const DateTime: TDateTime);
var
Handle: THandle;
SystemTime: TSystemTime;
FileTime: TFileTime;
begin
Handle := CreateFile(PChar(FileName), FILE_WRITE_ATTRIBUTES,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if Handle=INVALID_HANDLE_VALUE then
RaiseLastOSError;
try
DateTimeToSystemTime(DateTime, SystemTime);
if not SystemTimeToFileTime(SystemTime, FileTime) then
RaiseLastOSError;
if not SetFileTime(Handle, @FileTime, nil, nil) then
RaiseLastOSError;
finally
CloseHandle(Handle);
end;
end;

procedure TForm1.btntestClick(Sender: TObject);
var
DateTime: TDateTime;
begin
DateTime := StrToDateTime('6/7/1998 14:00:20');
SetFileCreationTime(paramstr(0), DateTime);
end;


El tema es que la fecha la cambia bien , pero la hora siempre aparece como 3 horas antes o 5 despues.

¿ Cual es el problema ?

Casimiro Notevi
03-02-2016, 10:27:49
¿En qué país estás?

Ramsay
03-02-2016, 15:31:02
Soy de Chile.

Casimiro Notevi
03-02-2016, 17:19:21
3 horas de diferencia es lo que tenéis con UTC/GMC
Seguramente al usar esta línea:
DateTimeToSystemTime(DateTime,SystemTime);
Estás asignando la hora del sistema, y no la local.

PD: Sin embargo, tu IP y tu servidor de internet son ambos de Argentina.