Ich möchte folgende tun gegeben zwei Daten in UTC-Formatierung:Wie kann ich Zeitdauern mit Moment.js genau formatieren?
var start = "2014-01-13T06:00:00.0000000Z";
var end = "2014-01-13T14:16:04.0000000Z";
Ich möchte die genaue Zeitspanne, die zwischen diesen beiden Zeitpunkten, wie
8h 16m
geht bekommen
ich habe versucht, mit dem folgenden:
var duration = moment(moment(end) - moment(start)).format('hh[h] mm[m]');
Aber das funktioniert nicht mit Tagen. Außerdem funktioniert es nicht mit Tagen, da sie immer> = 1 sind, auch wenn < 24 Stunden vergehen.
Ich habe auch versucht twix.js, um die Länge zu erhalten, aber seine Formatierung unterstützt nicht das Erstellen des oben angegebenen Formats, oder ich konnte den Weg dazu in seiner Dokumentation nicht finden. Grundsätzlich suche ich nach einer exakten Version von twix.humanizeLength()
.
Moment.js ‚s a.diff(b)
nur Gesamtdauern bietet, kann es mir die Länge der Zeitspanne in Minuten, Stunden oder Tagen geben, aber nicht mit Resten berechnet.
Meine aktuelle Lösung ist diff
zu verwenden, um die Bereiche zu erstellen und dann Modulo verwenden Reste zu berechnen, aber das ist nicht sehr elegant:
var days = moment(end).diff(start, 'days');
var hours = moment(end).diff(start, 'hours') % 24;
var minutes = moment(end).diff(start, 'minutes') % 60;
var duration = ((days > 0) ? days + 'd ' : '') + ((hours > 0) ? hours + 'h ' : '') + ((minutes > 0) ? minutes + 'm ' : '');
Die Frage: Gibt es eine intelligentere Weise zu tun dies in entweder moment.js oder twix.js, oder soll ich mir Zeit nehmen und mein eigenes moment.js Plugin entwickeln?
Ich werde sehen, was mit der Feature-Anfrage passiert. Im Moment macht das Plugin was ich will. – ane