402 Stimmen

Sekunden in HH-MM-SS mit JavaScript konvertieren?

Wie kann ich die Sekunden in eine HH-MM-SS Zeichenfolge mit JavaScript?

571voto

Harish Ambady Punkte 10887

Sie können dies ohne eine externe JavaScript-Bibliothek mit Hilfe der JavaScript-Date-Methode wie folgt erreichen:

var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);

Oder, wie bei @Frank Kommentar; ein Einzeiler:

new Date(SECONDS * 1000).toISOString().substr(11, 8);

378voto

Cleiton Punkte 16549

Aktualisiert (2020):

Bitte verwenden Sie die einzeilige Lösung von @Frank:

new Date(SECONDS * 1000).toISOString().substr(11, 8)

Si SEKUNDEN<3600 und wenn Sie nur anzeigen möchten MM:SS dann verwenden Sie den unten stehenden Code:

new Date(SECONDS * 1000).toISOString().substr(14, 5)

Das ist bei weitem die beste Lösung.


Alte Antwort:

Verwenden Sie die Moment.js Bibliothek.

216voto

T.J. Crowder Punkte 948310

Ich glaube nicht, dass irgendeine eingebaute Funktion des Standard-Datumsobjekts dies für Sie auf eine Art und Weise erledigt, die bequemer ist, als wenn Sie die Berechnung selbst vornehmen.

hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
minutes = Math.floor(totalSeconds / 60);
seconds = totalSeconds % 60;

Exemple :

let totalSeconds = 28565;
let hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
let minutes = Math.floor(totalSeconds / 60);
let seconds = totalSeconds % 60;

console.log("hours: " + hours);
console.log("minutes: " + minutes);
console.log("seconds: " + seconds);

// If you want strings with leading zeroes:
minutes = String(minutes).padStart(2, "0");
hours = String(hours).padStart(2, "0");
seconds = String(seconds).padStart(2, "0");
console.log(hours + ":" + minutes + ":" + seconds);

135voto

Ich weiß, das ist schon etwas älter, aber...

ES2015:

var toHHMMSS = (secs) => {
    var sec_num = parseInt(secs, 10)
    var hours   = Math.floor(sec_num / 3600)
    var minutes = Math.floor(sec_num / 60) % 60
    var seconds = sec_num % 60

    return [hours,minutes,seconds]
        .map(v => v < 10 ? "0" + v : v)
        .filter((v,i) => v !== "00" || i > 0)
        .join(":")
}

Es wird ausgegeben:

toHHMMSS(129600) // 36:00:00
toHHMMSS(13545) // 03:45:45
toHHMMSS(180) // 03:00
toHHMMSS(18) // 00:18

44voto

Oliver Salzburg Punkte 20625

Wie Cleiton in seine Antwort , moment.js kann hierfür verwendet werden:

moment().startOf('day')
        .seconds(15457)
        .format('H:mm:ss');

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X