Hoe krijg je een timestamp in JavaScript?

Hoe krijg ik een timestamp in JavaScript?

Iets dat lijkt op Unix timestamp, dat wil zeggen een enkel getal dat de huidige tijd en datum weergeeft. Hetzij als een getal, hetzij als een string.

Oplossing

Short & Snazzy:

+ new Date()

Een unary operator als plus activeert de valueOf methode in het Date object en deze geeft de timestamp (zonder enige wijziging) terug.

Details:

Op bijna alle huidige browsers kun je Date.now() gebruiken om de UTC tijdstempel in milliseconden te krijgen; een opmerkelijke uitzondering hierop is IE8 en eerder (zie compatibiliteitstabel).

Je kunt hier echter gemakkelijk een shim voor maken:

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

Om de timestamp in seconden te krijgen, kun je gebruiken:

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

Of als alternatief kunt u gebruiken:

Date.now() / 1000 | 0

Wat iets sneller zou moeten zijn, maar ook minder leesbaar (ook zie dit antwoord).

Ik zou aanraden om Date.now() te gebruiken (met compatibiliteitsshim). Het'is iets beter omdat het'korter is & maakt geen nieuw Datum object aan. Echter, als je geen shim wilt & maximale compatibiliteit, zou je de "old" methode kunnen gebruiken om de timestamp in milliseconden te krijgen:

new Date().getTime()

Die je dan als volgt kunt omzetten naar seconden:

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

En je kunt ook de valueOf methode gebruiken die we hierboven hebben laten zien:

new Date().valueOf()

Timestamp in milliseconden

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());
Commentaren (16)
var time = Date.now || function() {
  return +new Date;
};

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