Ich habe ähnliche Anforderungen wie diese: Zeit im HH: MM: SS-Format nur in Sekunden konvertieren?
aber in Javascript. Ich habe viele Beispiele für die Konvertierung von Sekunden in verschiedene Formate gesehen, aber nicht HH: MM: SS in Sekunden. Jede Hilfe wäre dankbar.
javascript
time
Sri Reddy
quelle
quelle
DD
inHH:MM:DD
?Antworten:
Versuche dies:
quelle
String.prototype.toSeconds = function () { if (!this) return null; var hms = this.split(':'); return (+hms[0]) * 60 * 60 + (+hms[1]) * 60 + (+hms[2] || 0); }
HINWEIS: Das|| 0
am Ende ist gut für jede Implementierung dieses Codes - es verhindert Probleme mit einer (noch gültigen) Zeitdarstellung von HH: MM (Chrome-Typ = "Zeit" -Eingaben werden in diesem Format ausgegeben, wenn Sekunden = 0).hh:mm
nichtseconds
in diesem Fall , was ich ändern muss ..?var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
invar seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60;
Diese Funktion behandelt "HH: MM: SS" sowie "MM: SS" oder "SS".
quelle
Dies kann ziemlich belastbar mit folgendem erfolgen:
Dies liegt daran, dass jede Zeiteinheit innerhalb der Stunden, Minuten und Sekunden ein Vielfaches von 60 größer ist als die kleinere Einheit. Die Zeit wird in Stunden, Minuten und Sekunden aufgeteilt und dann auf Sekunden reduziert, indem der akkumulierte Wert der höheren Einheiten multipliziert mit 60 multipliziert wird, wenn er durch jede Einheit geht.
Das
+time
wird die Zeit auf eine Zahl umgestellt.Es endet im Grunde:
(60 * ((60 * HHHH) + MM)) + SS
Wenn nur Sekunden vergangen sind, wäre das Ergebnis eine Zeichenfolge. Um dies zu beheben, können wir das gesamte Ergebnis in ein int umwandeln:
quelle
HH:MM:SS
gut als auch gut mitMM:SS
der akzeptierten Antwort um.'03'.split(':').reduce((acc,time) => (60 * acc) + +time, 0);
schlägt fehl, weil eine unerwartete Zeichenfolge zurückgegeben wird:'03'.split(':').reduce((acc,time) => (60 * acc) + +time);
Da die getTime- Funktion des Date-Objekts die Millisekunden seit dem 01.01.1970 erhält, können wir Folgendes tun:
quelle
Konvertieren Sie die
hh:mm:ss
Zeichenfolge in einer Zeile in Sekunden. Auch erlaubth:m:s
Format undmm:ss
,m:s
etcquelle
hh:mm:ss
Zeichenfolge in einer Zeile in Sekunden. Auch erlaubth:m:s
Format undmm:ss
,m:s
etc.reverse()
Folgendes überspringen : '00: 01: 11'.split (':'). Reduzieren ((val, entry, i) => val + entry * (3600 / Math.pow (60, i)), 0 ) === 71mm:ss
es nicht richtig funktioniert.Versuchen
quelle
Die statische Methode von Javascript
Date.UTC()
macht den Trick:quelle
Hier ist vielleicht ein etwas besser lesbares Formular für die ursprünglich genehmigte Antwort.
quelle
Ausgabe: 1499755980000 (in Millisekunden) (1499755980000/1000) (in Sekunden)
Hinweis: Diese Ausgabe berechnet den Unterschied von 1970-01-01 12: 0: 0 bis jetzt und wir müssen die moment.js implementieren
quelle
Diese Funktion funktioniert auch für MM: SS:
quelle
Entnommen aus der von Paul angegebenen Lösung https://stackoverflow.com/a/45292588/1191101, jedoch unter Verwendung der alten Funktionsnotation, sodass sie auch in anderen js-Engines (z. B. Java Rhino) verwendet werden kann.
oder nur dieses mehr lesbar
quelle
quelle
Sie können dies dynamisch tun - falls Sie nicht nur auf Folgendes stoßen: HH: mm: ss, sondern auch auf mm: ss oder sogar ss allein.
quelle