Comment obtenir un horodatage en JavaScript ?

Comment obtenir un horodatage en JavaScript ?

Quelque chose de similaire à [Unix timestamp][1], c'est-à-dire un nombre unique qui représente l'heure et la date actuelles. Soit sous forme de nombre, soit sous forme de chaîne.

[1] : https://en.wikipedia.org/wiki/Unix_time

Solution

Short & Snazzy :

+ new Date()

Un opérateur unaire comme plus déclenche la méthode valueOf dans l'objet Date et il retourne l'horodatage (sans aucune altération).

Détails:

Sur presque tous les navigateurs actuels, vous pouvez utiliser [Date.now()][1] pour obtenir l'horodatage UTC en millisecondes ; une exception notable est IE8 et antérieurs (voir [tableau de compatibilité][3]).

Vous pouvez facilement créer une cale pour cela, cependant :

if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

Pour obtenir le timestamp en secondes, vous pouvez utiliser :

Math.floor(Date.now() / 1000)

Ou alternativement, vous pouvez utiliser :

Date.now() / 1000 | 0

Ce qui devrait être légèrement plus rapide, mais aussi moins lisible (voir aussi [voir cette réponse][2]).

Je recommanderais d'utiliser Date.now() (avec un shim de compatibilité). C'est un peu mieux parce que c'est plus court et ne crée pas un nouvel objet Date. Cependant, si vous ne voulez pas de shim & une compatibilité maximale, vous pouvez utiliser la méthode "old" pour obtenir le timestamp en millisecondes :

new Date().getTime()

Que vous pouvez ensuite convertir en secondes comme ceci :

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

Vous pouvez également utiliser la méthode valueOf que nous avons montrée ci-dessus :

new Date().valueOf()

Historique en millisecondes

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

[1] : http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.4.4 [2] : https://stackoverflow.com/questions/7487977/using-bitwise-or-0-to-floor-a-number [3] : http://kangax.github.io/compat-table/es5/#Date.now

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

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