Hvordan får du et tidsstempel i JavaScript?

Hvordan kan jeg få et tidsstempel i JavaScript?

Noe som ligner på Unix timestamp, det vil si et enkelt tall som representerer gjeldende tid og dato. Enten som et tall eller en streng.

Løsning

Kort og elegant:

+ new Date()

En unær operator som plus utløser valueOf-metoden i Date-objektet og returnerer tidsstempelet (uten noen endring).

Detaljer:

På nesten alle aktuelle nettlesere kan du bruke Date.now() for å få UTC-tidsstempelet i millisekunder; et viktig unntak fra dette er IE8 og tidligere (se kompatibilitetstabell).

Du kan imidlertid enkelt lage et mellomlegg for dette:

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

For å få tidsstempelet i sekunder, kan du bruke:

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

Eller alternativt kan du bruke:

Date.now() / 1000 | 0

som burde være litt raskere, men også mindre lesbar (se også dette svaret).

Jeg vil anbefale å bruke Date.now() (med kompatibilitets mellomlegg). Det er litt bedre fordi det er kortere og ikke oppretter et nytt Date-objekt. Men hvis du ikke vil ha et mellomlegg og maksimal kompatibilitet, kan du bruke den "gamle" metoden for å få tidsstempelet i millisekunder :

new Date().getTime()

Som du deretter kan konvertere til sekunder som dette:

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

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

new Date().valueOf()

Tidsstempel 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)