¿Cómo puedo obtener segundos desde la época en Javascript?

152

En Unix, puedo correr date '+%s'para obtener la cantidad de segundos desde la época. Pero necesito consultar eso en un navegador front-end, no back-end.

¿Hay alguna manera de averiguar segundos desde Epoch en JavaScript?

Alicia
fuente

Respuestas:

246
var seconds = new Date() / 1000;

O, para una versión menos hacky:

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

No se olvide Math.floor()o Math.round()para redondear al número entero más próximo o es posible obtener una cifra decimal muy extraño que no desea:

var d = new Date();
var seconds = Math.round(d.getTime() / 1000);
DVK
fuente
8
var seconds = new Date() / 1000;<- ¿Qué tipo de magia arcana es esta?
Martin Wickman
3
Re: arcane magic: Según estos documentos , Javascript sabe cómo convertir un objeto Date en un Número. Esto significa que puede escribir Number(new Date())para obtener un número, o incluso +(new Date()), o usar cualquier instancia de Fecha en un contexto numérico como new Date()/1000JavaScript y la convertirá de manera útil a un número para trabajar con sus ecuaciones matemáticas.
dpmott
59

Prueba esto:

new Date().getTime() / 1000

Es posible que desee utilizar Math.floor()o Math.round()cortar la fracción de milisegundos.

Tomasz Nurkiewicz
fuente
39

Querías segundos desde la época

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

ejemplo de uso

foo = seconds_since_epoch();
usuario40521
fuente
3
Esta debería ser la respuesta, ya que tiene en cuenta el decimal.
James Pack
11

Las soluciones anteriores usan propiedades de instancia. Otra forma es usar la propiedad de clase Date.now:

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

Si desea que time_in_seconds sea un entero, tiene 2 opciones:

a. Si desea ser coherente con el truncamiento de estilo C:

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

si. Si solo desea tener la definición matemática de la división de enteros, simplemente tome la palabra. (La división entera de Python hace esto).

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

Si desea solo segundos como un número entero sin los decimales que representan milisegundos todavía conectados, use esto:

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

Puede crear un objeto Date (que tendrá la hora actual) y luego llamar getTime()para obtener el ms desde la época.

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

Si quieres segundos, luego divídelo por 1000:

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

La versión más simple:

Math.floor(Date.now() / 1000) 
aristidesfl
fuente
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
fuente