Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 04.08.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard verlorene Berechnungs-Sekunde

Ich berechne den Zeitunterschied zwischen UTC, lokaler und Serverzeit.
Da es ja sein kann, daß man einen Unterschied von halben Stunden hat und ich keine Lust habe, die Std./Minuten einzugeben, rechne ich also:
Code:
   double CServUtcDiff=(TimeGMT()-TimeCurrent() );
   Print(" UTC: ",TimeToStr(TimeGMT(),TIME_DATE|TIME_SECONDS),
         " Ser: ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),
         " Loc: ",TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS),
         " CServUtcDiff =",DoubleToString(CServUtcDiff,2)
        );
Das dumme ist nur - je nachdem in welcher Sekunde ich grade bin, ist das Ergebnis ungenau - also statt der erwarteten 3600.00 erhalte ich 3599.00 Sekunden. Wenn ich dieses Ergebnis nähme, um die Zeiten umzurechnen (also z.B. UTC+9 wäre Serverzeit UTC+10, theoretisch), dann fehlt mir ne Sekunde.
Irgendwelche Ideen wie man es anders machen kann?
(von der Idee, einfach nur mit UTC Zeiten zu rechnen, bin ich abgekommen, weil Tageszuweisungen und -verschiebungen damit komplizierter werden).
AVT