Ich habe gesehen, dass alle ihre Ansichten zu dem Problem posten, obwohl bereits wenige Top-Antworten alle notwendigen Informationen enthalten, um sie für den spezifischen Anwendungsfall anzupassen.
Und da ich auch hip sein will - hier ist meine unnötige und etwas umständliche Lösung, die lautet:
a) Lesbar (hoffentlich!)
b) Leicht anpassbar
c) Gibt keine Nullen aus
Trommelwirbel
function durationToDDHHMMSSMS(durms) {
if (!durms) return "??";
var HHMMSSMS = new Date(durms).toISOString().substr(11, 12);
if (!HHMMSSMS) return "??";
var HHMMSS = HHMMSSMS.split(".")[0];
if (!HHMMSS) return "??";
var MS = parseInt(HHMMSSMS.split(".")[1],10);
var split = HHMMSS.split(":");
var SS = parseInt(split[2],10);
var MM = parseInt(split[1],10);
var HH = parseInt(split[0],10);
var DD = Math.floor(durms/(1000*60*60*24));
var string = "";
if (DD) string += ` ${DD}d`;
if (HH) string += ` ${HH}h`;
if (MM) string += ` ${MM}m`;
if (SS) string += ` ${SS}s`;
if (MS) string += ` ${MS}ms`;
return string;
},
Beachten Sie, dass dieser Code ES6-Vorlagenzeichenfolgen verwendet. Ich bin sicher, dass ein so kluger Kopf wie Sie keine Schwierigkeiten haben wird, sie bei Bedarf durch reguläre Zeichenfolgen zu ersetzen.
15 Stimmen
Benchmarks einiger der vorgeschlagenen Antworten in diesem Thread. jsperf.com/ms-to-hh-mm-ss-time-format
0 Stimmen
Mögliche Duplikat von Sekunden in HH-MM-SS mit JavaScript umwandeln?