Wie erhalte ich das aktuelle Datum oder/und die Uhrzeit in Sekunden mit Javascript?
Antworten
Zu viele Anzeigen? Date.now()
gibt Millisekunden seit Epoche an. Keine Notwendigkeit der Verwendung von new
.
Sehen Sie sich die Referenz hier an: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now
(Nicht unterstützt in IE8.)
Verwendung von new Date().getTime() / 1000
ist eine unvollständige Lösung für die Ermittlung der Sekunden, da sie 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 Fließkommazahlen für bedingte Anweisungen sicherer, da die Granularität, die man mit Fließkommazahlen erhält, zu unerwünschten Ergebnissen führen kann. Zum Beispiel:
if (1405792936.993 < 1405792937) // true
Warnung: Bitweise Operatoren können Probleme verursachen, wenn sie zur Bearbeitung von Zeitstempeln verwendet werden. Zum Beispiel, (new Date() / 1000) | 0
kann auch verwendet werden, um den Wert in Sekunden umzurechnen, allerdings verursacht dieser Code die folgenden Probleme:
- Standardmäßig sind Javascript-Zahlen vom Typ 64 Bit (doppelte Präzision) Floats, und bitweise Operatoren wandeln diesen Typ implizit in vorzeichenbehaftete 32-Bit-Ganzzahlen um. Argumentativ sollte der Typ nicht implizit durch den Compiler konvertiert werden, und stattdessen sollte der Entwickler die Konvertierung bei Bedarf vornehmen.
- Der vorzeichenbehaftete 32-Bit-Ganzzahl-Zeitstempel, der durch den bitweisen Operator erzeugt wird, bewirkt, dass die Jahr 2038 Problem wie in den Kommentaren erwähnt.
- See previous answers
- Weitere Antworten anzeigen