Cómo obtener el timestamp actual con JavaScript

Javascript

En este tutorial vamos a ver cómo puedes obtener el timestamp actual, que un sistemas UNIX es un número entero que representa el número de segundos transcurridos desde el 1 de enero de 1970. Gracias a este número es posible calcular la fecha actual en la que nos encontramos.

En sistemas UNIX o sistemas basados en UNIX, como Linux, macOS o FreeBSD, puedes usar el comando date +%s para obtener el timestamp actual:

date +%s

El resultado será el siguiente:

1524379940

En este tutorial veremos cómo obtener un timestamp en JavaScript y cómo obtener una fecha a partir del mismo, además de ciertas particularidades que diferencian a los timestamps de JavaScript de los timestamps de UNIX.

Cómo obtener el timestamp actual

En JavaScript puedes obtener el timestamp actual usando varios métodos del objeto Date. Puedes obtenerlo de varias formas, aunque a diferencia de los sistemas UNIX, el valor devuelto siempre estará representado en milisegundos:

  • Puedes usar el método now() del objeto Date. Sin embargo, este método no está disponible en Internet Explorer 8 o versiones inferiores, aunque actualmente es un navegador que apenas se utiliza:
    const timestamp = Date.now();
    console.log(timestamp); // 1611878426370 
  • Usa el método getTime() del objeto Date, que funcionará en cualquier navegador:
    const timestamp = new Date().getTime();
    console.log(timestamp); // 1611878426370
  • Usa el método valueOf() del objeto Date que también funcionará en cualquier navegador:
    const timestamp = new Date().valueOf();
    console.log(timestamp); // 1611878426370

Actualmente se recomienda que uses el método Date.now() salvo que quieras hacer que tu código sea compatible con navegadores muy antiguos. Para saber si un navegador es compatible basta con que compruebes el valor que devuelve el método, que será un número entero en caso de ser compatible o undefined en caso contrario.

Alternativamente también puedes usar el operador unario +, que invocará automáticamente al método valueOf() cuando crees una fecha:

+new Date

El único problema de este último método es que se instanciará un nuevo objeto Date que se descartará al instante, una vez devuelto el resultado.

Cómo obtener el timestamp en segundos

Los métodos anteriores devuelven un timestamp expresado en milisengundos. Si quieres que esté en segundos, basta con que dividas el valor obtenido entre 1000:

const segundos = Math.floor(Date.now() / 1000);
console.log(segundos); // 1611879190

Alternativamente también puedes obtenerlo de este modo:

const segundos = ~~(Date.now() / 1000);
console.log(segundos); // 1611879190

Puedes usar el método Math.round() con el resultado, aunque así, el resultado se aproximará al siguiente segundo al actual, aunque no se haya completado el segundo presente.

Cómo generar una fecha con el timestamp

Puedes generar una fecha a partir de un timestamp, que es una operación muy habitual. Para ello basta con que crees un nuevo objeto Date y pases un timestamp a su constructor:

const timestamp = Date.now(); 
const fecha = new Date(timestamp);

console.log(fecha); // Fri Jan 29 2021 01:23:59 GMT+0100 

Debes asegurarte de que el timestamp es un número y no una cadena u otro tipo de valor. Para asegurarte de ello, puedes usar la función parseInt().

Y esto ha sido todo.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”