Ich möchte eine Zeitdauer, dh die Anzahl der Sekunden, in eine durch Doppelpunkte getrennte Zeitzeichenfolge (hh: mm: ss) konvertieren.
Ich habe hier einige nützliche Antworten gefunden, aber alle sprechen von der Konvertierung in das Format x Stunden und x Minuten.
Gibt es also einen winzigen Ausschnitt, der dies in jQuery oder nur in rohem JavaScript ausführt?
Antworten:
Sie können es jetzt wie folgt verwenden:
Arbeitsausschnitt:
Code-Snippet anzeigen
quelle
Sie können dies ohne externe JS-Bibliothek mithilfe der JS Date-Methode wie folgt tun:
quelle
new Date(1000 * seconds).toISOString().substr(11, 8)
..replace(/^[0:]+/, "")
after verwendensubstr
, um alle Nullen und:
vom Anfang der Zeichenfolge zu entfernen .Um den Zeitteil im Format abzurufen
hh:MM:ss
, können Sie diesen regulären Ausdruck verwenden:(Dies wurde oben im selben Beitrag von jemandem erwähnt, danke dafür.)
quelle
var myDate = new Date().toTimeString().replace(/.*(\d{2}:\d{2})(:\d{2}).*/, "$1");
replace
ist verwirrend. Warum nicht verwendennew Date(null, null, null, null, null, timeInSeconds).toTimeString().match(/\d{2}:\d{2}:\d{2}/)[0]
?new Date().toTimeString().split(" ")[0]
Ich empfehle gewöhnliches Javascript mit dem Date-Objekt:
(Natürlich ist dem erstellten Datumsobjekt ein tatsächliches Datum zugeordnet, aber diese Daten sind irrelevant, sodass Sie sich für diese Zwecke keine Sorgen machen müssen.)
quelle
date.getUTCHours()
und verwendedate.getUTCMinutes()
.Eine Google-Suche ergab dieses Ergebnis :
quelle
secondsToTime(119.9)
=>Object {h: 0, m: 1, s: 60}
. Um dies zu beheben, fügen Siesecs = Math.round(secs);
am Anfang der Methode hinzu. Natürlich haben wir diesen Fehler während der Demo gesehen ...Variation eines Themas. Behandelt einstellige Sekunden etwas anders
quelle
Hier ist meine Meinung dazu:
Erwartete Ergebnisse:
quelle
const formatTime = (seconds, h = Math.floor(seconds / 3600), m = Math.floor((seconds % 3600) / 60), s = seconds % 60) => [h, m > 9 ? m : '0' + m, s > 9 ? s : '0' + s].filter(s => s).join(':');
second
Argumente akzeptiert . Ich finde meine Version klarer, auch wenn sie etwas ausführlicher ist.seconds: number
Typ Anmerkungen, in es6?const s = Math.round(seconds % 60);
Ich mag die erste Antwort. Es gibt einige Optimierungen:
Quelldaten sind eine Zahl. zusätzliche Berechnungen sind nicht erforderlich.
viel überschüssiges Computing
Ergebniscode:
quelle
Number
ist richtig, weilseconds
es tatsächlich eine Zahl ist. Sie sollten aus einem String konvertieren, bevor Sie diese Funktion verwenden, was das Richtige ist!Verwenden der erstaunlichen Bibliothek moment.js :
Auf diese Weise können Sie eine beliebige Dauer angeben, sei es Stunden, Minuten, Sekunden, Mühlen, und eine für Menschen lesbare Version zurückgeben.
quelle
quelle
new Date().toString().split(" ")[4];
Ergebnis
15:08:03
quelle
new Date(new Date().getTime() - startTime).toUTCString().split(" ")[4]
wostartTime
zuvor festgelegtstartTime = new Date().getTime();
. (Ich musste verwenden,toUTCString()
weil sonst die Zeiten eine Stunde aus waren.)Es ist ziemlich einfach,
quelle
Ergebnis:
quelle
Die Antwort von Webjins hat mir am besten gefallen, daher habe ich sie auf die Anzeige von Tagen mit Anzeigensuffix erweitert, die Anzeige an Bedingungen geknüpft und als Suffix in einfachen Sekunden eingefügt:
gibt "3d 16:32:12" oder "16:32:12" oder "32:12" oder "12s" zurück
quelle
Ich habe Powtacs Antwort geliebt, aber ich wollte sie in angle.js verwenden, also habe ich einen Filter mit seinem Code erstellt.
Es ist funktional identisch, außer dass ich ein optionales Dezimalfeld hinzugefügt habe, um Sekundenbruchteile anzuzeigen. Verwenden Sie es wie jeden anderen Filter:
{{ elapsedTime | HHMMSS }}
zeigt an:01:23:45
{{ elapsedTime | HHMMSS : 3 }}
zeigt an:01:23:45.678
quelle
Ich denke, was die Leistung betrifft, ist dies bei weitem die schnellste:
quelle
Beispiele
quelle
Math.floor()
die Sekunden aufschreiben, da sie möglicherweise in Dezimalstellen angegeben werden. (Ist mit mir passiert.)Hier ist noch eine andere Version, die auch Tage behandelt:
quelle
Ein regulärer Ausdruck kann verwendet werden, um die Zeitzeichenfolge in der Zeichenfolge
toString()
abzugleichen, die von der Methode des Date-Objekts zurückgegeben wurde. Diese ist wie folgt formatiert: "Do 05.07.2012 02:45:12 GMT + 0100 (GMT Daylight Time)". Beachten Sie, dass diese Lösung die Zeit seit der Epoche verwendet: Mitternacht des 1. Januar 1970. Diese Lösung kann einzeilig sein, obwohl die Aufteilung das Verständnis erheblich erleichtert.quelle
So habe ich es gemacht. Es scheint ziemlich gut zu funktionieren und ist extrem kompakt. (Es werden jedoch viele ternäre Operatoren verwendet.)
... und zum Formatieren von Strings ...
quelle
Mit der folgenden Funktion können Sie die Zeit (in Sekunden) in das
HH:MM:SS
Format konvertieren:Ohne ein Trennzeichen zu übergeben, wird es
:
als (Standard-) Trennzeichen verwendet:Wenn Sie
-
als Trennzeichen verwenden möchten , übergeben Sie es einfach als zweiten Parameter:Demo
Siehe auch diese Geige .
quelle
Es gibt eine neue Methode für Zeichenfolgen im Block: padStart
Hier ist ein Anwendungsbeispiel: YouTube-Dauer in 4 Zeilen JavaScript
quelle
So habe ich es gemacht
timeFromSecs (22341938) gibt '258d 14h 5m 38s' zurück.
quelle
Ich persönlich bevorzuge die führende Einheit (Tage, Stunden, Minuten) ohne führende Nullen. Sekunden sollten jedoch immer von Minuten (0:13) angeführt werden. Diese Präsentation kann ohne weitere Erklärung (Kennzeichnung als min, sec (s) usw.) leicht als "Dauer" betrachtet werden und kann in verschiedenen Sprachen verwendet werden (Internationalisierung).
// Nachahmung der serverseitigen (.net, C #) Dauer Formatierung wie:
quelle
Sie können Momement.js mit dem Plugin für das Moment-Dauer-Format verwenden :
Siehe auch diese Geige
quelle
Dabei ist der Gebietsschema-Parameter ("en", "de" usw.) optional
quelle
quelle
Hier ist ein Einzeiler, der für 2019 aktualisiert wurde:
quelle
Date
Objekt.Hier ist eine ziemlich einfache Lösung, die auf die nächste Sekunde rundet!
quelle
Dies ist eine, die ich kürzlich für MM: SS geschrieben habe. Es ist nicht genau auf die Frage, aber es ist ein anderes Einzeiler-Format.
Bearbeiten: Dies wurde aus Gründen der Abwechslung hinzugefügt, aber die beste Lösung hier ist https://stackoverflow.com/a/25279399/639679 unten.
quelle