Wie kann ich Sekunden seit der Epoche in Javascript bekommen?

151

Unter Unix kann ich laufen date '+%s' , um die Anzahl der Sekunden seit der Epoche abzurufen. Aber ich muss das in einem Browser-Front-End abfragen, nicht in einem Back-End.

Gibt es eine Möglichkeit, Sekunden seit Epoche in JavaScript herauszufinden?

Alice
quelle

Antworten:

245
var seconds = new Date() / 1000;

Oder für eine weniger hackige Version:

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

Vergessen Sie nicht, Math.floor()oder Math.round()zu Runde auf die nächste ganze Zahl oder Sie könnten eine sehr ungerade dezimal bekommen , dass Sie nicht wollen:

var d = new Date();
var seconds = Math.round(d.getTime() / 1000);
DVK
quelle
7
var seconds = new Date() / 1000;<- Was für eine arkane Magie ist das?
Martin Wickman
2
Betreff: Arkane Magie: Gemäß diesen Dokumenten weiß Javascript, wie man ein Datumsobjekt in eine Zahl konvertiert. Dies bedeutet, dass Sie eingeben können Number(new Date()), um eine Zahl oder sogar zu erhalten +(new Date()), oder eine beliebige Datumsinstanz in einem numerischen Kontext wie verwenden können. new Date()/1000Javascript konvertiert diese Datumsinstanz hilfreich in eine Zahl, um mit Ihren mathematischen Gleichungen zu arbeiten.
dpmott
58

Versuche dies:

new Date().getTime() / 1000

Möglicherweise möchten Sie einen Millisekundenbruch verwenden Math.floor()oder Math.round()schneiden.

Tomasz Nurkiewicz
quelle
39

Sie wollten Sekunden seit der Epoche

function seconds_since_epoch(){ return Math.floor( Date.now() / 1000 ) }

Beispiel verwenden

foo = seconds_since_epoch();
user40521
quelle
3
Dies sollte die Antwort sein, da die Dezimalstelle berücksichtigt wird.
James Pack
11

Die obigen Lösungen verwenden Instanzeigenschaften. Eine andere Möglichkeit besteht darin, die class -Eigenschaft zu verwenden Date.now:

var time_in_millis = Date.now();
var time_in_seconds = time_in_millis / 1000;

Wenn Sie möchten, dass time_in_seconds eine Ganzzahl ist, haben Sie zwei Möglichkeiten:

ein. Wenn Sie mit dem Abschneiden im C-Stil konsistent sein möchten:

time_in_seconds_int = time_in_seconds >= 0 ?
                      Math.floor(time_in_seconds) : Math.ceil(time_in_seconds);

b. Wenn Sie nur die mathematische Definition der Ganzzahldivision haben möchten, ergreifen Sie einfach das Wort. (Pythons Integer-Division macht das).

time_in_seconds_int = Math.floor(time_in_seconds);
dotgc
quelle
9

Wenn Sie nur Sekunden als Ganzes ohne die angehängten Dezimalstellen für Millisekunden möchten , verwenden Sie Folgendes:

var seconds = Math.floor(new Date() / 1000);
Ryan Kreager
quelle
5

Sie können ein Datumsobjekt erstellen (das die aktuelle Uhrzeit enthält) und dann aufrufen getTime(), um die ms seit der Epoche abzurufen.

var ms = new Date().getTime();

Wenn Sie Sekunden möchten, teilen Sie diese durch 1000:

var sec = new Date().getTime() / 1000;
jfriend00
quelle
1

Die einfachste Version:

Math.floor(Date.now() / 1000) 
aristidesfl
quelle
0
EPOCH means time from 01 January 1970
var date = new Date();
Following line will return the number of milliseconds from 01 Jaunary 1970
var ms = date.getTime();
Following line will convert milliseconds to seconds
var seconds = Math.floor(ms/1000);
console.log("Seconds since epoch =",seconds);
Tanzeem Bhatti
quelle