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