Ich biete mehrere Lösungen mit Beschreibungen in dieser Antwort. Sie können gerne Fragen stellen, wenn etwas unklar ist
Schnelle und schmutzige Lösung:
Date.now() /1000 |0
Warnung : es könnte im Jahr 2038 abbrechen und negative Zahlen zurückgeben, wenn Sie die |0
Magie. Verwenden Sie Math.floor()
stattdessen zu diesem Zeitpunkt
Math.floor()
Lösung:
Math.floor(Date.now() /1000);
Eine nerdige Alternative von Derek aus den Kommentaren unter dieser Antwort:
new Date/1e3|0
Polyfill zu erhalten Date.now()
arbeiten:
Um es im IE zum Laufen zu bringen, könnten Sie dies tun (Polyfill von MDN ):
if (!Date.now) {
Date.now = function now() {
return new Date().getTime();
};
}
Wenn Ihnen das Jahr / der Wochentag / die Sommerzeit egal ist, müssen Sie sich dies für Daten nach 2038 merken:
Bitweise Operationen führen zur Verwendung von 32-Bit-Ganzzahlen anstelle von 64-Bit-Fließkommazahlen.
Sie müssen es richtig verwenden, wie:
Math.floor(Date.now() / 1000)
Wenn Sie nur die relative Zeit ab dem Zeitpunkt wissen wollen, an dem der Code zum ersten Mal durchlaufen wurde, könnten Sie so etwas wie dies verwenden:
const relativeTime = (() => {
const start = Date.now();
return () => Date.now() - start;
})();
Falls Sie jQuery verwenden, können Sie $.now()
wie beschrieben in jQuery-Dokumente was die Polyfill-Funktion überflüssig macht, da $.now()
macht intern das Gleiche: (new Date).getTime()
Wenn Sie sich einfach nur über die Version von jQuery freuen, sollten Sie ein Upvoting in Betracht ziehen ce Antwort, da ich sie selbst nicht gefunden habe.
Nun eine kleine Erläuterung, was |0
tut:
Durch die Bereitstellung |
weisen Sie den Interpreter an, eine binäre ODER-Operation durchzuführen.
Bitoperationen erfordern absolute Zahlen, die das dezimale Ergebnis von Date.now() / 1000
in eine Ganzzahl umwandeln.
Bei dieser Konvertierung werden die Dezimalstellen entfernt, was zu einem ähnlichen Ergebnis wie bei der Verwendung von Math.floor()
ausgeben würde.
Aber seien Sie gewarnt: wird ein 64-Bit-Double in eine 32-Bit-Ganzzahl umgewandelt.
Dies führt zu Informationsverlusten, wenn es um große Zahlen geht.
Zeitstempel werden nach 2038 aufgrund von 32-Bit-Integer-Überlauf abbrechen, es sei denn, Javascript bewegt sich auf 64-Bit-Integer im Strict Mode.
Für weitere Informationen über Date.now
folgen Sie diesem Link: Date.now()
@ MDN
0 Stimmen
Var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now(); console.log(timeStampInMs, Date.now());