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 * 60

    Das 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
    Jan

    Hier 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
    0

    Oder ? ^^



  • 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


Anmelden zum Antworten