Hvordan får man et tidsstempel i JavaScript?

Hvordan kan jeg få et tidsstempel i JavaScript?

Noget i stil med Unix timestamp, dvs. et enkelt tal, der repræsenterer det aktuelle tidspunkt og den aktuelle dato. Enten som et tal eller som en streng.

Løsning

Kort & smart:

+ new Date()

En unær operatør som plus udløser valueOf-metoden i Date-objektet, og den returnerer tidsstemplet (uden nogen ændring).

Detaljer:

På næsten alle nuværende browsere kan du bruge Date.now() til at få UTC-tidsstemplet i millisekunder; en bemærkelsesværdig undtagelse er IE8 og tidligere (se kompatibilitetstabel).

Du kan dog nemt lave en shim til dette:

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

For at få tidsstemplet i sekunder, kan du bruge:

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

Eller alternativt kan du bruge:

Date.now() / 1000 | 0

Hvilket skulle være lidt hurtigere, men også mindre læsbart (se også se dette svar).

Jeg vil anbefale at bruge Date.now() (med kompatibilitets-shim). Det'er lidt bedre, fordi det'er kortere & doesn't create a new Date object. Men hvis du ikke ønsker en shim & maksimal kompatibilitet, kan du bruge "old" metoden til at få tidsstemplet i millisekunder:

new Date().getTime()

Som du derefter kan konvertere til sekunder som dette:

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

Og du kan også bruge valueOf-metoden, som vi viste ovenfor:

new Date().valueOf()

Timestamp i millisekunder

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

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