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