Zeitdifferenz in hh:mm:ss ausgeben, Stunde ist immer 1 (?!?!)
-
Hallo,
ich möchte für eine kleine Shell nach Beendigen eines Programms ausgeben, wie lange das Programm aktiv war. Das soll im Format Stunden:Minuten:Sekunden geschehen.
Folgendes habe ich bisher:
time_t start = time(0), diff; struct tm* tm; //... .... arbeiten ... diff = time(0) - start; tm = localtime(&diff); printf("%d:%d:%d", tm->tm_hour, tm_tm_min, tm->tm_sec);
Wenn das Programm aber nur wenige Sekunden gelaufen ist, erhalte ich immer bei der Stundenanzeige eine 1. Woran kann das liegen?
Wenn ich mir diff ausgebe, bewegt sich das im Sekundenbereich...MfG
Simon
-
Ich schätze mal weil die die Differenz nicht einfach in eine Zeit umwandeln kannst. "localtime" berechnet dir das Datum indem du ihr sagst wieviele Sekunden seit dem 1.1.1900 um 0 Uhr (ob das genau das richtige Datum/Zeit ist weiß ich allerdings grad nicht) vergangen sind, daraus kann man dann ja das aktuelle Datum bestimmen.
Wenn du die Differenz in Sekunden hast kannst du allerdings ja
int sec = diff % 60; diff /= 60; int min = diff % 60; diff /= 60; int hour = diff;
machen.
-
Das wird stumpf daran liegen, dass wir uns hier in UTC+1 befinden und localtime dir die lokale Zeit ausweist. Versuch's mal mit gmtime.
-
Mit gmtime klappt es, danke!
Ist das jetzt nur "Zufall", dass es das richtige anzeigt oder würde es das auf jedem Rechner in jeder beliebigen Zeitzone auch tun?