Millisekunden zu Stunden/Minuten/Sekunden
-
Hallo zusammen,
ich habe hier eine Rechnung im Internet gefunden, die aus den Millisekunden die Stunden/Minuten/Sekunden wie bei einer Uhr errechnet (Also 23:03:33 zB.).
Allerdings kapiere ich nicht, wieso diese Rechnung funktioniert.
So siehts aus:x = Millisekunden / 1000
Stunden = x / 60 / 60
Minuten = x / 60 - x / 60 / 60 * 60
Sekunden = x - x / 60 * 60Das einzige was ich verstehe sind die Stunden. Aber jetzt mal die Minuten.
x sind in dem Beispiel 72000.72000 / 60 - 72000 / 60 / 60 * 60 = 1200 - 1200 / 60 * 60 = 0 / 60 * 60 = 0
Wenn ich aber unten den C++-Code ausführe, zeigt er mir alles richtig an.
Wo liegt mein Denkfehler ?Danke für eure Hilfe.
LG
JanHier der C++ Code (Dies soll übrigens die Zeit errechnen, wie lange der Computer schon hochgefahren ist)
#include <iostream> #include <windows.h> using namespace std; int main(){ while(1){ int ms = GetTickCount() / 1000; int Stunden = ms / 60 / 60; int Minuten = ms / 60 - ms / 60 / 60 * 60; int Sekunden = ms - ms / 60 * 60; cout << Stunden << ":" << Minuten << ":" << Sekunden << endl; Sleep(500); system("cls"); } return 0; }
-
Punkt- vor Strichrechnung
-
Hm ok danke, aber sagen wir mal Minuten. x = 72.000
Minuten = x / 60 - x / 60 / 60 * 60
(72000 / 60) - (72000 / 60) / 60 * 60
1200 - (1200 / 60) * 60
1200 - (20 * 60)
1200 - 1200
0Oder ? ^^
-
Das liegt an der Integer-Arithmetik.
x - x/60 * 60 ist nicht 0, sondern x%60
Wenn x 100 ist, dann hast Du: 100 - 1 * 60, wegen 100/60 == 1 und nicht 1.666...
-
Urgs, sry Leute, ich hab nicht logisch gedacht.
Erstmal danke Z für deine Antwort.Habe ausser Acht gelassen, dass es die Minute 0 gibt. Ich dachte, 0 kann nicht stimmen. Keine Ahnung, wie ich darauf gekommen bin ^^
Danke nochmal an alle.
LG
Jan