358 Stimmen

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

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

544voto

sje397 Punkte 40297
var seconds = new Date().getTime() / 1000;

.... gibt Ihnen die Sekunden seit Mitternacht, 1. Januar 1970

Referenz

124voto

 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.)

112voto

tim-montague Punkte 13518

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:

  1. 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.
  2. 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.

37voto

Nick Craver Punkte 609016

Aufgrund Ihres Kommentars denke ich, dass Sie nach etwas Ähnlichem suchen:

var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;

In Ihrem Scheck prüfen Sie dann:

if(new Date().getTime() > timeout) {
  alert("Session has expired");
}

15voto

Lazarus Punkte 39998

Um die Anzahl der Sekunden ab der Javascript-Epoche zu erhalten, verwenden Sie:

date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X