⬅ Zurück zur Übersicht

Sekunden in Tage, Stunden, Minuten, Sekunden umrechnen

david am Freitag, 22.06.2018 - 10:55:12
⬅ Zurück zur Übersicht

Bei einem aktuellen Projekt an dem ich heute morgen saß hatte ich etwas Kopfschmerzen dabei, einen Sekundenwert in Tage, Stunden, Minuten und Sekunden umzurechnen. Eigentlich simpel, aber ich stand auf dem Schlauch. Wem es auch so geht und vor einem ähnlichen Problem steht, hier eine Lösung.

Beispielsweise wollen wir nach 500 Sekunden ein Ereignis auslösen.

1
var basetime = 500;

Dann wären das 0 Tage, 0 Stunden, 8 Minuten, 20 Sekunden.

Berechnen lässt sich das ganze so:

1
2
3
4
var tage = Math.floor(basetime / 86400);
var stunden = Math.floor((basetime % 86400) / 3600);
var minuten = Math.floor((basetime % 3600) / 60);
var sekunden = Math.floor(basetime % 60);

Math.floor rundet das Ergebnis jeweils auf den nächst größeren natürlichen Zahlenwert herunter.
Für die Anzahl der Tage teilen wir also ganz einfach die Variable basetime (= die Anzahl an Sekunden welche wir umrechnen wollen) durch 86400 (= 60 Sekunden * 60 Minuten * 24 Stunden = 1 Tag) und runden den Wert ab.
Der Rest dieser Division (Modulo – Dividiert) entspricht dann den Sekunden, die noch übrig sind und nicht in einen Tag „gepackt“ werden konnten – geteilt durch 3600 (eine Stunde) entspricht jetzt der Anzahl der übrigen Stunden. Das ganze runden wir wieder ab, da wir mit Minuten „auffüllen“ wollen.

Wenn wir die Sekundenanzahl durch 3600 Zeilen haben wir die Anzahl der Stunden, welche in die Sekundenangabe reinpassen. Das ganze geteilt durch 60 gibt die Anzahl der Minuten, welche noch übrig sind. Abrunden, da wir mit Sekunden auffüllen wollen.

Schlussendlich modulo-teilen wir die Anzahl an Sekunden durch 60, um die Anzahl an Minuten herauszubekommen, die in die übergebene Sekundenanzahl passt. Abrunden, und wir haben die Zeit in Sekunden.
Lösen wir das ganze mal mit Zahlen auf, sieht das Ergebnis so aus:

1
2
3
4
5
6
7
8
9
var basetime = 500;
var tage = Math.floor(500 / 86400);
// 500 / 86400 = 0,005787037037037 = Abgerundet 0
var stunden = Math.floor((500 % 86400) / 3600);
// 500 % 86400 = 500 / 3600 = 0,138888888888889 = Abgerundet 0
var minuten = Math.floor((basetime % 3600) / 60);
// 500 % 3600 = 500 / 60 = 8 = Abgerundet 8
var sekunden = Math.floor(basetime % 60);
// 500 % 60 = 20 = Abgerundet 20
Kommentar schreiben

Kommentare