So erhalten Sie das aktuelle Datum und/oder die Uhrzeit in Sekunden

Lesezeit: 4 Minuten

Benutzer-Avatar
Hagelholz

Wie erhalte ich mit Javascript das aktuelle Datum oder/und die Uhrzeit in Sekunden?

  • Mögliches Duplikat von Wie erhalten Sie einen Zeitstempel in JavaScript?

    – GottZ

    25. April 2016 um 15:34 Uhr

  • Beachten Sie, dass die akzeptierte Antwort eine Fließkommazahl ergibt.

    – e18r

    5. April 2018 um 1:05 Uhr


Benutzer-Avatar
Tim Montag

Verwenden new Date().getTime() / 1000 ist eine unvollständige Lösung zum Erhalten der Sekunden, da es Zeitstempel mit Gleitkommaeinheiten erzeugt.

new Date() / 1000; // 1405792936.933

// Technically, .933 would be in milliseconds

Verwenden Sie stattdessen:

Math.round(Date.now() / 1000); // 1405792937

// Or
Math.floor(Date.now() / 1000); // 1405792936

// Or
Math.ceil(Date.now() / 1000); // 1405792937

// Note: In general, I recommend `Math.round()`,
//   but there are use cases where
//   `Math.floor()` and `Math.ceil()`
//   might be better suited.

Außerdem sind Werte ohne Gleitkommazahlen sicherer für bedingte Anweisungen, da die mit Gleitkommazahlen erzielte Granularität zu unerwünschten Ergebnissen führen kann. Zum Beispiel:

if (1405792936.993 < 1405792937) // true

Warnung: Bitweise Operatoren können Probleme verursachen, wenn sie zum Bearbeiten von Zeitstempeln verwendet werden. Zum Beispiel, (new Date() / 1000) | 0 kann auch verwendet werden, um den Wert in Sekunden zu „unterteilen“, dieser Code verursacht jedoch die folgenden Probleme:

  1. Standardmäßig sind Javascript-Zahlen vom Typ 64-Bit-Floats (doppelte Genauigkeit), und bitweise Operatoren konvertieren diesen Typ implizit in vorzeichenbehaftete 32-Bit-Ganzzahlen. Der Typ sollte wohl nicht implizit vom Compiler konvertiert werden, sondern der Entwickler sollte die Konvertierung bei Bedarf vornehmen.
  2. Der vom bitweisen Operator erzeugte vorzeichenbehaftete 32-Bit-Integer-Zeitstempel bewirkt die Jahr 2038 Problem wie in den Kommentaren erwähnt.

  • Stimme voll und ganz zu 👍 Verwenden Math.round(new Date() / 1000)

    – gdibble

    6. Oktober 2018 um 21:20 Uhr

  • Beachten Sie, dass Flooring mit dem bitweisen Operator dazu führt, dass der Wert in eine vorzeichenbehaftete 32-Bit-Ganzzahl umgewandelt wird. Sehen Jahr 2038 Problem.

    – Ryan

    21. September 2021 um 17:29 Uhr

  • @Ryan – danke, ich habe meine Antwort aktualisiert, um die Verwendung von zu unterbinden | 0

    – tim-montague

    22. September 2021 um 22:07 Uhr

  • warum Math.round anstatt Math.floor/Math.trunc?

    – André Figueiredo

    6. Dezember 2021 um 19:48 Uhr


  • @AndreFigueiredo – Vielen Dank für diese Beispiele. Die Lösung, die ich bereitgestellt habe, war für die Frage “Wie bekomme ich das aktuelle Datum/die aktuelle Uhrzeit in Sekunden in Javascript?”, sodass Ihr Beispiel in Stunden nicht im Kontext steht, aber ich denke, Ihre Beispiele in Sekunden haben eine gewisse Gültigkeit. Im Allgemeinen denke ich immer noch Math.round() ist das Beste. Aber ja, ich stimme zu, dass es Anwendungsfälle gibt, in denen es nicht am besten ist, und Math.floor() und Math.ceil() sind angemessener. Ich habe meine Antwort aktualisiert, um dasselbe zu bemerken.

    – tim-montague

    9. Dezember 2021 um 3:47 Uhr

  • Diese Antwort für Millisekunden beantwortet nicht einmal die Frage, die gestellt wurde. „Wie erhalte ich das aktuelle Datum/die aktuelle Uhrzeit in Sekunden“

    – tim-montague

    17. August 2020 um 21:53 Uhr


  • Date.now() / 1000 um die Frage selbst zu beantworten

    – Zauberer11

    24. August 2021 um 8:48 Uhr

  • @magier11 – Date.now() / 1000 beantwortet die Frage auch nicht, weil es Werte mit Teilbrüchen in Millisekunden angibt

    – tim-montague

    28. September 2021 um 7:30 Uhr


  • Math.floor(Date.now()/1000)

    – Daniel Wu

    31. März um 3:34 Uhr

Ich benutze das:

Math.round(Date.now() / 1000)

Keine Notwendigkeit für die Erstellung neuer Objekte (siehe doc Date.now())

Benutzer-Avatar
Gemeinschaft

So erhalten Sie die heutigen Gesamtsekunden des Tages:

getTodaysTotalSeconds(){
    let date = new Date();        
    return +(date.getHours() * 60 * 60) + (date.getMinutes() * 60) + date.getSeconds();
}

Ich habe hinzufügen + im Gegenzug welche Rückkehr in int. Dies kann anderen Entwicklern helfen. 🙂

Benutzer-Avatar
Константин Ван

Diese JavaScript-Lösungen geben Ihnen die Millisekunden oder die Sekunden seit dem 1. Januar 1970, Mitternacht, an.

Die IE 9+-Lösung (IE 8 oder die ältere Version unterstützt dies nicht.):

var timestampInMilliseconds = Date.now();
var timestampInSeconds = Date.now() / 1000; // A float value; not an integer.
    timestampInSeconds = Math.floor(Date.now() / 1000); // Floor it to get the seconds.
    timestampInSeconds = Date.now() / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(Date.now() / 1000); // Round it to get the seconds.

Um weitere Informationen zu erhalten Date.now(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now

Die generische Lösung:

// ‘+’ operator makes the operand numeric.
// And ‘new’ operator can be used without the arguments ‘(……)’.
var timestampInMilliseconds = +new Date;
var timestampInSeconds = +new Date / 1000; // A float value; not an intger.
    timestampInSeconds = Math.floor(+new Date / 1000); // Floor it to get the seconds.
    timestampInSeconds = +new Date / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(+new Date / 1000); // Round it to get the seconds.

Seien Sie vorsichtig bei der Verwendung, wenn Sie so etwas nicht möchten.

if(1000000 < Math.round(1000000.2)) // false.

  • Hallo, jüngeres Ich. Wie geht es Ihnen?

    – Константин Ван

    21. Mai 2021 um 16:37 Uhr

1010020cookie-checkSo erhalten Sie das aktuelle Datum und/oder die Uhrzeit in Sekunden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy