Tratando de cambiar la fecha y la hora de la computadora que corre mi aplicacion, tomando como referencia la fecha y la hora del servidor donde esta mi base de datos firebird, me he fijado en estos hilos( hilo1 , hilo2) de mi amigo enecumene y he realizado lo siguiente:
delphi
var wHora, wMinutos, wSegundos, wMilisegundos: word; wAno, wMes, wDia: Word; dt: TSystemTime; begin ZQuery1.Open; DecodeTime( ZQuery1HORA.AsDateTime, wHora, wMinutos, wSegundos, wMilisegundos ); DecodeDate( ZQuery1FECHA.AsDateTime, wAno, wMes, wDia ); dt.wDay := wdia; dt.wMonth := wmes; dt.wYear := wAno; dt.wHour := whora; dt.wMinute := wMinutos; dt.wSecond := wSegundos; dt.wMilliseconds := wMilisegundos; SetSystemTime(dt); ZQuery1.Close; end;
En este caso la fecha y la hora se cambian, pero la hora lo hace con 5 horas menos. No se porque lo hace.
Entonces he realizado esto:
delphi
var systemtime : TSystemTime; begin ZQuery1.Open; DateTimeToSystemTime(ZQuery1FECHA.AsDateTime+ZQuery1HORA.AsDateTime,systemtime); SetLocalTime(systemtime); ZQuery1.Close; end;
y aqui si funciona perfectamente bien.
lo pongo aqui, por si ha alguien le sirve.
si hay alguna mejor forma de hacerlo, diganlo y si alguien sabe porque falla la primera opcion.
la consulta del query para saber la hora del servidor esta en el hilo1 de enecumene y es esta:
SELECT CURRENT_TIME AS HORA, CURRENT_DATE AS FECHA FROM RDB$DATABASE