Aktuelles Datum / Uhrzeit in Sekunden abrufen

Antworten:

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

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

Referenz

sje397
quelle
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
tfmontague
quelle
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");
}
Nick Craver
quelle
16

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

date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;
Lazarus
quelle
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>

blueberry0xff
quelle
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.
Константин Ван
quelle
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.

CEO RecDecLec
quelle
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.

Tetta
quelle
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
dr.dimitru
quelle
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
etoricky
quelle
-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. :) :)

Sachin Shah
quelle