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.
Contenidos
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 objetoDate
. 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 objetoDate
, que funcionará en cualquier navegador:const timestamp = new Date().getTime(); console.log(timestamp); // 1611878426370
- Usa el método
valueOf()
del objetoDate
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.