Wie kann ich HH-MM-SS
mit JavaScript Sekunden in eine Zeichenfolge konvertieren ?
javascript
date
time
date-format
time-format
Hannoun Yassir
quelle
quelle
Antworten:
Kennst du keine Datumsangaben ? es ist ein Muss zu wissen.
Schreiben Sie mit datejs einfach Folgendes:
--aktualisieren
Heutzutage ist date.js veraltet und wird nicht mehr gepflegt. Verwenden Sie daher " Moment.js ", was viel besser ist, wie von TJ Crowder hervorgehoben.
--update 2
Bitte verwenden Sie @ Franks eine einzeilige Lösung:
Es ist bei weitem die beste Lösung.
quelle
TypeError: Object [object Date] has no method 'clearTime'
.Sie können dies ohne externe JavaScript-Bibliothek mithilfe der folgenden JavaScript-Datumsmethode tun:
Oder gemäß dem Kommentar von @Frank ; ein Einzeiler:
quelle
new Date(SECONDS * 1000).toISOString().substr(11, 8);
Object doesn't support property or method 'toISOString'
Ich glaube nicht, dass eine integrierte Funktion des Standard-Date-Objekts dies auf eine Weise für Sie erledigt, die bequemer ist, als nur selbst zu rechnen.
Beispiel:
Code-Snippet anzeigen
quelle
0.05
in derhours
Variablen zurückgegeben wurden. Ich habe es in eine gelegt,parseInt
die es für meinen Fall repariert hat, aber ich denke nicht, dass das für alles richtig wäre. Trotzdem hat mir das geholfen, also danke!parseInt
, das ist zum Parsen von Strings , nicht zum Manipulieren von Zahlen.Math.floor
wäre hier die relevante Operation.seconds = Math.floor(totalSeconds % 60);
. Ich habe dort auch gerade ein Dezimalergebnis erhalten.totalSeconds % 60
kann nur einen Bruchteil haben, wenntotalSeconds
es einen Bruchteil hat. Ob Sie das Wort ergreifen möchten, hängt davon ab, ob Sie diese Informationen verlieren oder aufbewahren möchten. (Die anderen Bodenoperationen, die wir durchführen, verlieren keine Informationen, weil sie nur die Daten löschen, die inminutes
und enden werdenseconds
.)console.log( hours +':'+ ('0'+minutes).slice(-2) +':'+ ('0'+seconds).slice(-2) );
Ich weiß, das ist ein bisschen alt, aber ...
ES2015:
Es wird ausgegeben:
quelle
Wie Cleiton in darauf hingewiesen , seine Antwort , moment.js kann dafür verwendet werden:
quelle
moment().startOf('year').seconds(30000000).format('DDD HH:mm:ss')
..format('YYYY DDD HH:mm:ss')
quelle
Das macht den Trick:
(Von hier bezogen )
quelle
Wir können diese Funktion viel kürzer und klarer machen, aber das verringert die Lesbarkeit, sodass wir sie so einfach wie möglich und so stabil wie möglich schreiben.
oder Sie können dies hier überprüfen :
quelle
Versuche dies:
quelle
Hier ist eine Erweiterung der Zahlenklasse. toHHMMSS () konvertiert Sekunden in einen hh: mm: ss-String.
quelle
Einfach zu verfolgende Version für Noobies:
quelle
Diese Funktion sollte es tun:
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:Siehe auch diese Geige .
quelle
:
als Standard für denseparator
Parameter festgelegt, wie ich bereits erklärt habe. Dies geschieht durch die Aussagetypeof separator !== 'undefined' ? separator : ':'
. Außerdem ist Ihre Funktion ziemlich identisch mit meiner, abgesehen von einigen kosmetischen Änderungen, und beide sollten dieselbe Ausgabe erzeugen ... außer dass meine Version eine viel bessere Browserunterstützung bietet. Ihre funktioniert nicht in einer Version von Internet Explorer oder MS Edge <14.Unten ist der angegebene Code, der Sekunden in das hh-mm-ss-Format konvertiert:
Holen Sie sich eine alternative Methode aus Konvertieren Sie Sekunden in das HH-MM-SS-Format in JavaScript
quelle
quelle
Ich wollte nur eine kleine Erklärung für die nette Antwort oben geben:
In der zweiten Zeile teilen wir die Gesamtzahl der Sekunden durch 3600, um die Gesamtzahl der Stunden zu erhalten, da in einer Stunde 3600 Sekunden vorhanden sind. Wir verwenden parseInt, um Dezimalstellen zu entfernen. Wenn totalSec 12600 (dreieinhalb Stunden) wäre, würde parseInt (totalSec / 3600) 3 zurückgeben, da wir 3 volle Stunden haben werden. Warum brauchen wir in diesem Fall die% 24? Wenn wir 24 Stunden überschreiten, nehmen wir an, wir haben 25 Stunden (90000 Sekunden), dann bringt uns das Modulo hier wieder auf 1 zurück, anstatt 25 zurückzugeben. Es beschränkt das Ergebnis innerhalb eines 24-Stunden-Limits, da es 24 Stunden gibt in einem Tag.
Wenn Sie so etwas sehen:
Stellen Sie sich das so vor:
quelle
In diesen alten Thread einsteigen - das OP gab HH: MM: SS an, und viele der Lösungen funktionieren, bis Sie feststellen, dass Sie mehr als 24 Stunden benötigen. Und vielleicht möchten Sie nicht mehr als eine einzige Codezeile. Bitte schön:
Es gibt H +: MM: SS zurück. Um es zu benutzen, benutze einfach:
... Ich habe versucht, die geringstmögliche Menge an Code für einen netten Einzeiler-Ansatz zu verwenden.
quelle
Für den Sonderfall von HH: MM: SS.MS (Gleichung: "00: 04: 33.637"), wie er von FFMPEG zur Angabe von Millisekunden verwendet wird .
Beispielverwendung, ein Millisekunden-Transport-Timer:
Anwendungsbeispiel, gebunden an ein Medienelement
Außerhalb der Frage sind diese Funktionen in PHP geschrieben:
quelle
+ "." + p.getMilliseconds()
indem Sie einfachnew Date(p.getTime()-o.getTime()).toISOString().split("T")[1].split("Z")[0]
Haben Sie versucht, einem Datumsobjekt Sekunden hinzuzufügen?
Ein Beispiel: https://jsfiddle.net/j5g2p0dc/5/
Aktualisiert: Der Beispiellink fehlte, daher habe ich einen neuen erstellt.
quelle
addSeconds
für ein Date-Objekt wie verwendet habenDate.prototype.addSeconds = function(seconds){...}
. Ja, es funktioniert, danke für das Update.Hier ist eine Funktion zum Konvertieren von Sekunden in das hh-mm-ss-Format basierend auf der Antwort von powtac hier
jsfiddle
Beispiel Verwendung
quelle
Nachdem ich mir alle Antworten angesehen hatte und mit den meisten nicht zufrieden war, kam ich auf diese Idee. Ich weiß, dass ich sehr spät zum Gespräch komme, aber hier ist es trotzdem.
Ich erstelle ein neues Datumsobjekt, ändere die Uhrzeit in meine Parameter, konvertiere das Datumsobjekt in eine Zeitzeichenfolge und entferne das zusätzliche Material, indem ich die Zeichenfolge teile und nur den Teil zurückgebe, der benötigt wird.
Ich dachte, ich würde diesen Ansatz teilen, da Regex, Logik und mathematische Akrobatik nicht mehr erforderlich sind, um die Ergebnisse im Format "HH: mm: ss" zu erhalten. Stattdessen werden integrierte Methoden verwendet.
Vielleicht möchten Sie sich die Dokumentation hier ansehen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
quelle
Es gibt viele Möglichkeiten, dieses Problem zu lösen, und es gibt natürlich gute Möglichkeiten, die vorgeschlagen werden. Aber ich möchte hier noch einen optimierten Code hinzufügen
Wenn Sie keine formatierte Null mit weniger als 10 Zahlen möchten, können Sie diese verwenden
}}
Beispielcode http://fiddly.org/1c476/1
quelle
In einer Zeile mit der Lösung von TJ Crowder:
In einer Zeile eine andere Lösung, die auch Tage zählt:
Quelle: https://gist.github.com/martinbean/2bf88c446be8048814cf02b2641ba276
quelle
quelle
Sie können auch den folgenden Code verwenden:
quelle
new Date().toString().split(" ")[4];
Ergebnis
15:08:03
quelle
Für jeden, der AngularJS verwendet, besteht eine einfache Lösung darin, den Wert mit der Datums-API zu filtern , die Millisekunden basierend auf dem angeforderten Format in eine Zeichenfolge konvertiert. Beispiel:
Beachten Sie, dass dies Millisekunden erwartet. Wenn Sie von Sekunden konvertieren (wie die ursprüngliche Frage formuliert wurde), möchten Sie möglicherweise timeRemaining mit 1000 multiplizieren.
quelle
Ich bin auf den Fall gestoßen, in dem einige erwähnt haben, dass die Anzahl der Sekunden mehr als einen Tag beträgt. Hier ist eine angepasste Version von @Harish Anchus bestbewerteter Antwort, die längere Zeiträume berücksichtigt:
Beispiel:
quelle
Anwendungsbeispiel
quelle
Keine der Antworten hier entspricht meinen Anforderungen, da ich damit umgehen möchte
Obwohl diese vom OP nicht verlangt werden, empfiehlt es sich, Randfälle abzudecken, insbesondere wenn dies nur wenig Aufwand erfordert.
Es ist ziemlich offensichtlich, dass das OP eine ANZAHL von Sekunden bedeutet, wenn er Sekunden sagt . Warum sollten Sie Ihre Funktion festlegen
String
?quelle
secondsToTimeSpan(8991)
kehrt zurück,6.00:05:51
während ich denke, es sollte zurückkehren00:02:29:51
Ich habe diesen Code bereits verwendet, um ein einfaches Zeitspannenobjekt zu erstellen:
quelle