¿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?

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

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.


39

Querías segundos desde la época

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

ejemplo de uso

foo = seconds_since_epoch();

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

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

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;




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);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.