Pregunta ¿Cómo se obtiene una marca de tiempo en JavaScript?


¿Cómo puedo obtener una marca de tiempo en JavaScript?

Algo similar a la marca de tiempo de Unix, es decir, un número único que representa la fecha y hora actuales. Ya sea como un número o una cadena.


3358
2017-10-21 09:29


origen


Respuestas:


Corto y elegante

+ new Date()

Un operador unario como plus desencadena el valueOf método en el Date objeto y devuelve la marca de tiempo (sin ninguna alteración).

Detalles:

En casi todos los navegadores actuales puedes usar Date.now() para obtener la marca de tiempo UTC en milisegundos; una excepción notable a esto es IE8 y anterior (ver tabla de compatibilidad)

Sin embargo, puedes hacer un ajuste fácil 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 podrías usar:

Date.now() / 1000 | 0

Que debería ser un poco más rápido, pero también menos legible (también ver esta respuesta)

Yo recomendaría usar Date.now() (con compatibilidad shim). Es un poco mejor porque es más corto y no crea un nuevo Date objeto. Sin embargo, si no desea un ajuste y la compatibilidad máxima, puede usar el método "antiguo" para obtener la marca de tiempo en milisegundos:

new Date().getTime()

Que luego puedes convertir a segundos como este:

Math.round(new Date().getTime()/1000)

Y también puedes usar valueOf método que mostramos arriba:

new Date().valueOf()

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


4148
2017-10-21 09:32



Me gusta esto, porque es pequeño:

+new Date

También me gusta esto, porque es igual de corto y es compatible con los navegadores modernos, y más de 500 personas votaron que es mejor:

Date.now()

429
2018-02-18 00:33



JavaScript funciona con el número de milisegundos desde la época, mientras que la mayoría de los otros idiomas funcionan con los segundos. Podría trabajar con milisegundos, pero tan pronto como pase un valor para decir PHP, las funciones nativas de PHP probablemente fallen. Así que para estar seguro, siempre uso los segundos, no los milisegundos.

Esto le dará una marca de tiempo de Unix (en segundos):

var unix = Math.round(+new Date()/1000);

Esto le dará los milisegundos desde la época (no la marca de tiempo de Unix):

var milliseconds = new Date().getTime();

229
2018-05-11 22:27



var time = Date.now || function() {
  return +new Date;
};

time();

126
2017-10-21 10:05



Proporciono múltiples soluciones con descripciones en esta respuesta. Siéntase libre de hacer preguntas si algo no está claro
PD: lamentablemente alguien fusionó esto con la respuesta principal sin dar crédito.


Solución rápida y sucia:

Date.now() /1000 |0

Advertencia: eso podría romper en 2038 y devolver los números negativos si haces el |0 magia. Utilizar Math.floor() en cambio, en ese momento


95
2017-07-12 07:15



var timestamp = Number(new Date()); // current time as number

69
2017-10-21 13:00



jQuery proporciona su propio método para obtener la marca de tiempo:

var timestamp = $.now();

(Además, solo implementa (new Date).getTime() expresión)

ÁRBITRO:  http://api.jquery.com/jQuery.now/


50
2018-03-15 14:19



Solo para sumar, aquí hay una función para devolver una cadena de marca de tiempo en Javascript. Ejemplo: 15:06:38 PM

function displayTime() {
    var str = "";

    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {
        minutes = "0" + minutes
    }
    if (seconds < 10) {
        seconds = "0" + seconds
    }
    str += hours + ":" + minutes + ":" + seconds + " ";
    if(hours > 11){
        str += "PM"
    } else {
        str += "AM"
    }
    return str;
}

36
2017-09-21 19:12



console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch


34
2018-04-30 16:53



Además de las otras opciones, si desea un formato de fecha ISO, puede obtenerlo directamente

console.log(new Date().toISOString());


29
2018-01-29 15:08



Uno que no he visto todavía

Math.floor(Date.now() / 1000); // current time in seconds

Otro que no he visto aún es

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();

22
2018-03-31 08:18