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?

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

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.


39

Chciałeś sekund od epoki

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

przykład użycia

foo = seconds_since_epoch();

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

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

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;




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);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.