Heim > Web-Frontend > js-Tutorial > Wie kann ich mit moment.js den Zeitunterschied zwischen zwei Datumsangaben genau berechnen?

Wie kann ich mit moment.js den Zeitunterschied zwischen zwei Datumsangaben genau berechnen?

DDD
Freigeben: 2024-11-17 11:39:01
Original
386 Leute haben es durchsucht

How to Accurately Calculate the Time Difference Between Two Datetimes using moment.js?

Zeitdifferenz zwischen Datums- und Uhrzeitangaben ermitteln

Die Bestimmung der Zeitdifferenz zwischen zwei bestimmten Datums- und Uhrzeitangaben ist in vielen Anwendungen eine häufige Anforderung. Dieser Artikel bietet eine umfassende Anleitung zum Erhalten eines präzisen Zeitintervalls mithilfe von moment.js, zur Behebung potenzieller Probleme und zum Anbieten alternativer Ansätze.

Problemstellung

Gegeben zwei Datums- und Uhrzeitangaben, die als Zeichenfolgen dargestellt werden, besteht das Ziel darin Berechnen Sie den Zeitunterschied und zeigen Sie ihn im Format HH:MM:SS an. Zum Beispiel:

var now  = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";

//expected result:
"00:39:30"
Nach dem Login kopieren

Erster Versuch und Problem

Mit der Diff-Funktion von moment.js könnten Sie Folgendes versuchen:

var now = moment("04/09/2013 15:00:00");
var then = moment("04/09/2013 14:20:30");

console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss"))
//outputs 10:39:30
Nach dem Login kopieren

Dieser Ansatz fügt jedoch fälschlicherweise hinzu 10 Stunden, obwohl die internen Werte der Dauer korrekt sind.

Richtige Lösung

Um dieses Problem zu beheben, gibt es zwei Optionen:

Option 1 (für Dauer von weniger als 24 Stunden):

moment.utc(moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss")
Nach dem Login kopieren

Dieser Ansatz wandelt den Zeitunterschied in UTC um und beseitigt so etwaige Sommerzeitinkonsistenzen.

Option 2 (für Dauern von 24 Stunden oder mehr):

var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
var d = moment.duration(ms);
var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");
Nach dem Login kopieren

Dieser Ansatz berechnet den Zeitunterschied in Millisekunden, wandelt ihn in ein Dauerobjekt um und extrahiert die Stunden, Minuten und Sekunden separat.

Alternativer Ansatz: Moment-Duration-Format

Für diejenigen, die eine praktische Lösung zum Formatieren von Dauerobjekten suchen, kann ein Drittanbieter-Plugin namens Moment-Duration-Format verwendet werden:

var s = d.format("hh:mm:ss");
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mit moment.js den Zeitunterschied zwischen zwei Datumsangaben genau berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage