Jak mogę uzyskać sekundy od epoki w JavaScript?

152

W date '+%s'systemie Unix mogę biegać, aby uzyskać liczbę sekund od epoki. Ale muszę zapytać o to w interfejsie przeglądarki, a nie na zapleczu.

Czy jest sposób, aby sprawdzić sekundy od Epoki w JavaScript?

Alice
źródło

Odpowiedzi:

246
var seconds = new Date() / 1000;

Lub, dla mniej hakerskiej wersji:

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

Nie zapomnij zaokrąglić Math.floor()lub Math.round()zaokrąglić do najbliższej liczby całkowitej, w przeciwnym razie możesz otrzymać bardzo nieparzysty dziesiętny, którego nie chcesz:

var d = new Date();
var seconds = Math.round(d.getTime() / 1000);
DVK
źródło
8
var seconds = new Date() / 1000;<- jaki to rodzaj tajemnej magii?
Martin Wickman
3
Re: arcane magic: Z tych dokumentów JavaScript wie, jak przekonwertować obiekt Date na Number. Oznacza to, że możesz wpisać Number(new Date())liczbę, a nawet +(new Date())użyć dowolnej instancji Date w kontekście liczbowym, takim jak, new Date()/1000a JavaScript z łatwością przekonwertuje to wystąpienie Date na liczbę, aby pracować z równaniami matematycznymi.
dpmott,
59

Spróbuj tego:

new Date().getTime() / 1000

Możesz użyć Math.floor()lub Math.round()zmniejszyć ułamek milisekund.

Tomasz Nurkiewicz
źródło
39

Chciałeś sekund od epoki

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

przykład użycia

foo = seconds_since_epoch();
user40521
źródło
3
To powinna być odpowiedź, ponieważ uwzględnia liczbę dziesiętną.
James Pack
11

Powyższe rozwiązania wykorzystują właściwości instancji. Innym sposobem jest użycie właściwości class Date.now:

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

Jeśli chcesz, aby time_in_seconds był liczbą całkowitą, masz dwie opcje:

za. Jeśli chcesz zachować spójność z obcinaniem w stylu C:

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

b. Jeśli chcesz mieć tylko matematyczną definicję dzielenia liczb całkowitych, po prostu zabieraj głos. (Robi to dzielenie liczb całkowitych w Pythonie).

time_in_seconds_int = Math.floor(time_in_seconds);
dotgc
źródło
9

Jeśli chcesz, aby liczba całkowita obejmowała tylko sekundy bez miejsc po przecinku reprezentujących nadal dołączone milisekundy, użyj tego:

var seconds = Math.floor(new Date() / 1000);
Ryan Kreager
źródło
5

Możesz utworzyć obiekt Date (który będzie zawierał aktualny czas), a następnie wywołać, getTime()aby uzyskać ms od epoki.

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

Jeśli chcesz sekund, podziel je przez 1000:

var sec = new Date().getTime() / 1000;
jfriend00
źródło
4

Mój preferowany sposób:

var msEpoch = (+new Date());
var sEpoch = (+new Date()) / 1000;

Więcej informacji na temat + skoku do króliczej nory .

Vinay
źródło
1

Najprostsza wersja:

Math.floor(Date.now() / 1000) 
aristidesfl
źródło
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
źródło