Come posso ottenere secondi dall'epoca in Javascript?


152

Su Unix, posso correre date '+%s'per ottenere la quantità di secondi dall'epoca. Ma devo interrogarlo in un front-end del browser, non nel back-end.

C'è un modo per scoprire i secondi dall'epoca in JavaScript?

Risposte:


246
var seconds = new Date() / 1000;

Oppure, per una versione meno confusa:

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

Non dimenticate di Math.floor()o Math.round()per arrotondare al numero intero più vicino o si potrebbe ottenere un decimale molto strano che non si desidera:

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

8
var seconds = new Date() / 1000;<- che tipo di magia arcana è questa?
Martin Wickman,

3
Ri: magia arcana: secondo questi documenti , Javascript sa come convertire un oggetto Date in un numero. Ciò significa che puoi digitare Number(new Date())per ottenere un numero, o anche +(new Date()), o utilizzare qualsiasi istanza di Date in un contesto numerico come new Date()/1000e Javascript convertirà utile quell'istanza di Date in un numero per lavorare con le tue equazioni matematiche.
dpmott,

59

Prova questo:

new Date().getTime() / 1000

Potresti voler usare Math.floor()o Math.round()tagliare una frazione di millisecondi.


39

Volevi secondi dall'epoca

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

esempio di utilizzo

foo = seconds_since_epoch();

3
Questa dovrebbe essere la risposta in quanto tiene conto del decimale.
James Pack,

11

Le soluzioni precedenti utilizzano le proprietà dell'istanza. Un altro modo è utilizzare la proprietà class Date.now:

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

Se vuoi che time_in_seconds sia un numero intero hai 2 opzioni:

un. Se vuoi essere coerente con il troncamento in stile C:

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

b. Se vuoi avere solo la definizione matematica di divisione di numeri interi da tenere, prendi semplicemente la parola. (La divisione intera di Python lo fa).

time_in_seconds_int = Math.floor(time_in_seconds);

9

Se vuoi solo secondi come numero intero senza i decimali che rappresentano millisecondi ancora collegati, usa questo:

var seconds = Math.floor(new Date() / 1000);

5

È possibile creare un oggetto Date (che avrà l'ora corrente in esso) e quindi chiamare getTime()per ottenere il ms dall'epoca.

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

Se vuoi secondi, quindi dividerlo per 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);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.