Aktuelles Datum / Uhrzeit in Sekunden abrufen


Antworten:


457
var seconds = new Date().getTime() / 1000;

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

Referenz


13
Während dies korrekt ist, wann würde es jemals nützlich sein? :)
Nick Craver

6
@Nick - Ich denke, alle Beispiele sind notwendigerweise spekulativ und klingen erfunden - aber ich mache eine Aufnahme :) Angenommen, Sie haben Daten mit Unix-Zeit gestempelt und möchten das Alter bestimmen. Mehr noch, obwohl ich denke, dass dies höchstwahrscheinlich mit "dem aktuellen Datum / der aktuellen Uhrzeit in Sekunden" gemeint ist; nur mein Bauchgefühl.
sje397

3
Eine Anwendung, bei der ich dies brauchte, war die Arbeit mit einem PHP-Backend, da die time () - Funktion dies bereits zurückgibt. Es eignet sich auch hervorragend für einen Zeitstempel, da Sie leicht den Unterschied zwischen time () als aktueller Zeit und einem Zeitstempel aus einer früheren Zeit ermitteln können, die in einer Datenbank gespeichert wurde, beispielsweise wenn ein Benutzer etwas gepostet hat. Für den Fall, dass Sie eine formatierte Zeit wie "22. Oktober 2015" erhalten möchten, können Sie Ihre eigene Funktion erstellen, um diese aus einem Zeitstempel als Argument zurückzugeben, oder eine bereits hier bei Stack verwendete verwenden. Wie auch immer, ich hoffe, das gibt Ihnen einen Einblick, wann dies nützlich wäre. @ NickCraver
uhfocuz

21
Es ist erwähnenswert, dass Sie das in Math.floor () einschließen möchten, sonst erhalten Sie eine Dezimalstelle.
David Webber

11
Eine Möglichkeit, dies zu tun, wäre die Berechnung der zwischen zwei Zeiten verstrichenen Zeit.
Zac


65

Die Verwendung new Date().getTime() / 1000ist eine unvollständige Lösung zum Abrufen der Sekunden, da Zeitstempel mit Gleitkommaeinheiten erzeugt werden.

const timestamp = new Date() / 1000; // 1405792936.933
// Technically, .933 would be milliseconds. 

Eine bessere Lösung wäre:

// Rounds the value
const timestamp = Math.round(new Date() / 1000); // 1405792937

// - OR -

// Floors the value
const timestamp = new Date() / 1000 | 0; // 1405792936

Werte ohne Floats sind auch für bedingte Anweisungen sicherer, da der Float unerwünschte Ergebnisse liefern kann. Die Granularität, die Sie mit einem Float erhalten, ist möglicherweise höher als erforderlich.

if (1405792936.993 < 1405792937) // true

1
Stimme Math.round(new Date() / 1000)
voll und ganz

37

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

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

Dann überprüfen Sie in Ihrem Scheck:

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

16

Um die Anzahl der Sekunden aus der Javascript-Epoche zu ermitteln, verwenden Sie:

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

9

// The Current Unix Timestamp
// 1443535752 seconds since Jan 01 1970. (UTC)

// Current time in seconds
console.log(Math.floor(new Date().valueOf() / 1000));  // 1443535752
console.log(Math.floor(Date.now() / 1000));            // 1443535752
console.log(Math.floor(new Date().getTime() / 1000));  // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

jQuery

console.log(Math.floor($.now() / 1000));               // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


3

Diese JavaScript-Lösungen geben Ihnen die Millisekunden oder Sekunden seit Mitternacht, dem 1. Januar 1970, 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.

Weitere Informationen erhalten Sie über 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, wenn Sie so etwas nicht wollen.

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

2
Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000

Dies sollte Ihnen die Millisekunden vom Beginn des Tages an geben.

(Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000)/1000

Dies sollte Ihnen Sekunden geben.

(Date.now()-(Date.now()/1000/60/60/24|0)*24*60*60*1000)/1000

Wie zuvor, außer dass ein bitweiser Operator verwendet wird, um die Anzahl der Tage zu bestimmen.


1

Seit dem 1. Januar 1970 können Sie einen anderen Weg finden, um die Zeit in Sekunden / Millisekunden zu ermitteln:

var milliseconds = +new Date;        
var seconds = milliseconds / 1000;

Aber seien Sie vorsichtig mit einem solchen Ansatz, da es schwierig sein kann, ihn zu lesen und zu verstehen.


Ich weiß es nicht, da die Verwendung der Nebenwirkungen der Sprache eleganter ist.
Tomazahlin

1

Bessere Abkürzungen:

+new Date # Milliseconds since Linux epoch
+new Date / 1000 # Seconds since Linux epoch
Math.round(+new Date / 1000) #Seconds without decimals since Linux epoch

0

An einem Tag im Jahr 2020, in Chrome 80.0.3987.132, gibt dies 1584533105

~~(new Date()/1000) // 1584533105
Number.isInteger(~~(new Date()/1000)) // true

-1

So erhalten Sie die heutigen Gesamtsekunden des Tages:

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

Ich habe +im Gegenzug hinzugefügt , welche in int. Dies kann anderen Entwicklern helfen. :) :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.