¿Cómo puedo obtener una marca de tiempo en JavaScript?
Algo similar a Unix timestamp, es decir, un único número que representa la hora y la fecha actuales. Ya sea como un número o una cadena.
+ new Date()
Un operador unario como plus
activa el método valueOf
en el objeto Date
y devuelve la marca de tiempo (sin ninguna alteración).
Detalles:
En casi todos los navegadores actuales se puede utilizar Date.now()
para obtener la marca de tiempo UTC en milisegundos; una notable excepción a esto es IE8 y anteriores (ver tabla de compatibilidad).
Sin embargo, puedes hacer fácilmente un shim para esto:
if (!Date.now) {
Date.now = function() { return new Date().getTime(); }
}
Para obtener la marca de tiempo en segundos, puedes usar
Math.floor(Date.now() / 1000)
O, alternativamente, puede utilizar
Date.now() / 1000 | 0
Que debería ser ligeramente más rápido, pero también menos legible (también ver esta respuesta).
Yo recomendaría usar Date.now()
(con shim de compatibilidad). Es ligeramente mejor porque es más corto y no crea un nuevo objeto Date
. Sin embargo, si no quieres un shim y máxima compatibilidad, podrías usar el método "old" para obtener la marca de tiempo en milisegundos:
new Date().getTime()
Que luego puedes convertir a segundos así:
Math.round(new Date().getTime()/1000)
Y también puedes usar el método valueOf
que mostramos arriba:
new Date().valueOf()
Sello de tiempo en milisegundos
var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();
console.log(timeStampInMs, Date.now());