Ich versuche, innerhalb von Sekunden einen Unterschied zwischen zwei Daten zu ermitteln. Die Logik wäre wie folgt:
- Legen Sie ein Anfangsdatum fest, das jetzt sein würde.
- Legen Sie ein Enddatum fest, das das Anfangsdatum plus einige Sekunden in der Zukunft sein soll (sagen wir zum Beispiel 15).
- Holen Sie sich die Differenz zwischen diesen beiden (die Anzahl der Sekunden)
Der Grund, warum ich es mit Datumsangaben mache, ist, dass das endgültige Datum / die endgültige Uhrzeit von einigen anderen Variablen abhängt und nie dasselbe ist (es hängt davon ab, wie schnell ein Benutzer etwas tut) und ich auch das ursprüngliche Datum für andere Dinge speichere.
Ich habe so etwas versucht:
var _initial = new Date(),
_initial = _initial.setDate(_initial.getDate()),
_final = new Date(_initial);
_final = _final.setDate(_final.getDate() + 15 / 1000 * 60);
var dif = Math.round((_final - _initial) / (1000 * 60));
Die Sache ist, dass ich nie den richtigen Unterschied bekomme. Ich habe versucht zu teilen, 24 * 60
was mich mit den Sekunden belassen würde, aber ich verstehe es nie richtig. Was ist also falsch an meiner Logik? Ich könnte einen dummen Fehler machen, da es ziemlich spät ist, aber es stört mich, dass ich es nicht zum Laufen bringen kann :)
quelle
Antworten:
Der Code
Oder noch einfacher,
(endDate - startDate) / 1000
wie in den Kommentaren erwähnt, es sei denn, Sie verwenden Typoskript.Die Erklärung
Sie müssen die
getTime()
Methode für dieDate
Objekte aufrufen und sie dann einfach subtrahieren und durch 1000 dividieren (da dies ursprünglich in Millisekunden erfolgt). Wenn Sie diegetDate()
Methode aufrufen , erhalten Sie den Tag des Monats als Ganzzahl zwischen 1 und 31 (nicht auf Null basierend), im Gegensatz zu der Epochenzeit, die Sie durch das Aufrufen dergetTime()
Methode erhalten würden. Dies entspricht der Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00 UhrSchimpfen
Abhängig von Ihren datumsbezogenen Vorgängen möchten Sie möglicherweise in die Integration einer Bibliothek wie date.js oder moment.js investieren, die dem Entwickler die Arbeit erheblich erleichtert. Dies ist jedoch nur eine Frage der persönlichen Präferenz.
Zum Beispiel in moment.js würden wir tun,
moment1.diff(moment2, "seconds")
was schön ist.Nützliche Dokumente für diese Antwort
quelle
.valueOf()
, was der-
Bediener auf jeden Fall nennen würde ...Sie können
new Date().getTime()
Zeitstempel abrufen. Dann können Sie die Differenz zwischen Ende und Start berechnen und schließlich den Zeitstempelms
in transformierens
.quelle
quelle
Der folgende Code gibt den Zeitunterschied in Sekunden an.
quelle
Versuchen Sie, dedizierte Funktionen aus höheren Programmiersprachen zu verwenden. JavaScript
.getSeconds();
passt hier:quelle
Zeitunterschied zwischen jetzt und 10 Minuten später mit momentjs
quelle