Hi,
ich versuche mit TIdTime die Differenz zur wirklichen, aktuellen Uhrzeit ermitteln.
Dafür will ich TIdTime nutzen:
Ich ziehe mir die aktuelle Uhrzeit auf dem Rechner und die aktuelle Uhrzeit von TIdTime.
Jetzt habe ich auf einem iOS und einem Android-Device rund 2 Stunden-Unterschied, d.h. läuft noch irgendwas mit den Zeitzonen falsch.
Auf einem Rechner, der bei manueller Prüfung auf die Sekunde die gleiche Uhrzeit wie ein anderer hat, bekomme ich 30 Sekunden Unterschied raus.
Was mache ich hier falsch? Muss man andere TIdTime-Methoden nutzen? Ich würde ungerne die Systemzeit selbst durch diesen Check anpassen.
Delphi-Quellcode:
procedure TicTrainerF.syncTime();
var idTime:TIdTime;
dtLocal,dtServer:TDateTime;
msDiff:Int64;
begin
idTime:=TIdTime.create(
nil);
try
idTime.Host:='
time.nist.gov';
dtServer:=idTime.dateTime;
if (dtServer>0)
then
begin
dtLocal:=NOW;
msDiff:=MillisecondsBetween(dtServer,dtLocal);
if (dtLocal>dtServer)
then
syncTimeDiff:=msDiff*-1
else
syncTimeDiff:=msDiff;
mlog.info('
syncTime '+FloatToStrF(syncTimeDiff/1000,ffFixed,8,3,myFormatSettings)+'
s');
end else begin
mlog.info('
syncTime not possible²');
syncTimeDiff:=0;
end;
finally
hideHourGlass();
idTime.free;
end;
except on E:
Exception do
begin
mlog.info('
syncTime not possible');
syncTimeDiff:=0;
end;
end;
end;
Grüße, Philipp