Gibt es eine Möglichkeit, die moment.js- format
Methode für Dauerobjekte zu verwenden? Ich kann es nirgendwo in den Dokumenten finden und es wird nicht als Attribut für Dauerobjekte angesehen.
Ich möchte in der Lage sein, etwas zu tun wie:
var diff = moment(end).unix() - moment(start).unix();
moment.duration(diff).format('hh:mm:ss')
Auch wenn es andere Bibliotheken gibt, die diese Art von Funktionalität problemlos aufnehmen können, wäre ich an Empfehlungen interessiert.
Vielen Dank!
javascript
momentjs
mvanveen
quelle
quelle
HH:mm:ss
werde00:00:23
in meinem vorherigen Beispiel geben.Antworten:
Wir versuchen, die Dauer in moment.js zu formatieren. Siehe https://github.com/timrwood/moment/issues/463
Einige andere Bibliotheken, die helfen könnten, sind http://countdownjs.org/ und https://github.com/icambron/twix.js
quelle
Schauen Sie sich die JSFiddle an
quelle
DDD HH:mm:ss.SSS
(woDDD
ist Tag des Jahres) wird angezeigt,1
wenn ich möchte0
. Irgendeine schnelle Lösung dafür?Konvertiere die Dauer in ms und dann in den Moment:
quelle
.format('HH:mm:ss')
. Siehe die DokumenteVerwenden Sie dieses Plugin Moment Duration Format .
Beispiel:
quelle
hh:mm:mm
und nur 10 Sekunden habe, wird sie10
anstelle von00:00:10
(auch bei aktivierter Vorlänge) angezeigt. Wenn sie nicht formatiert ist ... dann sollte sie etwas anderes heißen, sollten Formate sein standardisiert.{ trim: false }
, wird es dieses Verhalten stoppen.const duration = moment.duration(value, 'seconds');
ich sie formatieren kann mit:moment.utc(duration.as('milliseconds')).format('HH:mm:ss').toString();
Verwenden Sie diese Codezeile:
quelle
quelle
Das beste Szenario für meinen speziellen Anwendungsfall war:
Dies verbessert die Antwort von @ Wilson, da nicht auf die privaten internen Eigenschaften _data zugegriffen wird.
quelle
Sie brauchen kein .format. Verwenden Sie die Dauer wie folgt:
Ich habe diese Lösung hier gefunden: https://github.com/moment/moment/issues/463
BEARBEITEN:
Und mit Polsterung für Sekunden, Minuten und Stunden:
quelle
duration = moment.duration(7200, 'seconds'); withPadding(duration);
sagen aber "00:00".if (duration.asDays() > 0) { return 'at least one day';
- lese ich das richtigIch benutze:
Und ich bekomme "09:30" in var str.
quelle
_data
ist eine interne Eigenschaft und kann sich ohne Vorwarnung ändern.moment(moment.duration(1200000)._data).format('hh:mm:ss')
wird 12:20 statt 00:20 zurückkehrenh
liegt im Bereich von 1-12, ist also ziemlich zu erwarten. Verwenden SieH
stattdessen docs - Stunde Tokenmoment.utc(...).format("HH:mm");
wenn diff ein Moment ist
quelle
Wenn Sie bereit sind, eine andere Javascript-Bibliothek zu verwenden, kann numeral.js Sekunden wie folgt formatieren (Beispiel: 1000 Sekunden):
quelle
In diesen Fällen verwende ich die klassische Formatfunktion:
Dies ist ein Hack, da der Zeitunterschied als Standard-Moment-Datum behandelt wird, als Datum einer frühen Epoche, aber es spielt für unser Ziel keine Rolle und Sie benötigen kein Plugin
quelle
Wenn alle Stunden angezeigt werden müssen (mehr als 24) und wenn '0' vor Stunden nicht erforderlich ist, kann die Formatierung mit einer kurzen Codezeile erfolgen:
quelle
Basierend auf der Antwort von ni-ko-o-kin :
quelle
Zum Formatieren der Momentdauer in einen String
quelle
Wenn Sie Winkel verwenden, fügen Sie dies Ihren Filtern hinzu:
Anwendungsbeispiel
quelle
Meine Lösung, die keine andere Bibliothek beinhaltet und mit diff> 24h funktioniert
quelle
Wie wäre es mit nativem Javascript?
quelle
Verwenden Sie das Moment-Dauer-Format .
Client Framework (Beispiel: Reagieren)
Server (node.js)
quelle
Drucke:
quelle
quelle
Sie können numeral.js verwenden, um Ihre Dauer zu formatieren:
quelle
Dies kann verwendet werden, um die ersten beiden Zeichen als Stunden und die letzten zwei als Minuten abzurufen. Dieselbe Logik kann auf Sekunden angewendet werden.
quelle
moment.duration(x).format()
wurde veraltet. Sie können verwendenmoment.utc(4366589).format("HH:mm:ss")
, um die gewünschte Antwort zu erhalten.quelle
Wie verwende ich die Dauer von moment.js richtig? | Verwenden Sie moment.duration () im Code
Zuerst müssen Sie importieren
moment
undmoment-duration-format
.Verwenden Sie dann die Dauerfunktion. Wenden wir das obige Beispiel an: 28800 = 8 Uhr.
🎉Nun, Sie haben oben keinen Tippfehler. »Erhalten Sie um 8:00 Uhr einen richtigen Wert? Nein…, der Wert, den Sie erhalten, ist 8:00 a. Das Format von Moment.j funktioniert nicht wie vorgesehen.
💡Die Lösung besteht darin, Sekunden in Millisekunden umzuwandeln und die UTC-Zeit zu verwenden.
Gut, wir bekommen jetzt 8:00 Uhr. Wenn Sie 8 Uhr statt 8 Uhr für die Gesamtzeit möchten, müssen wir RegExp durchführen
quelle
Ich musste dies für die Arbeit tun, um die Stunden in diesem Format anzuzeigen. Zuerst habe ich es versucht.
Jedoch alles über 24 Stunden und die Stunden auf 0 zurückgesetzt. Aber die Minuten und Sekunden waren genau. Also habe ich nur diesen Teil für die Minuten und Sekunden verwendet.
Jetzt brauche ich nur noch die Gesamtstunden.
Und um das Format zu erhalten, das wir alle wollen, kleben wir es einfach zusammen.
Wenn dies der Fall
totalMilliseconds
ist, wird894600000
dies zurückkehren249:30:00
.Hoffe das hat geholfen. Hinterlassen Sie Fragen in den Kommentaren. ;)
quelle
Wenn Sie Angular> 2 verwenden, habe ich eine Pipe erstellt, die von der Antwort @ hai-alaluf inspiriert ist.
quelle
Das funktioniert bei mir:
quelle