Einzelnen Beitrag anzeigen

philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#1

Differenz zur echten Uhrzeit in Sekunden ermitteln

  Alt 15. Jan 2021, 23:39
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
  Mit Zitat antworten Zitat