Miten saat aikaleiman JavaScriptissä?

Miten saan aikaleiman JavaScriptissä?

Jotain vastaavaa kuin Unix timestamp, eli yksittäinen numero, joka edustaa nykyistä aikaa ja päivämäärää. Joko numerona tai merkkijonona.

Ratkaisu

Lyhyt & tyylikäs:

+ new Date()

Unaarinen operaattori, kuten plus, käynnistää valueOf-metodin Date-objektissa, ja se palauttaa aikaleiman (ilman mitään muutoksia).

Details:

Lähes kaikissa nykyisissä selaimissa voit käyttää Date.now() saadaksesi UTC-aikaleiman millisekunneissa; huomattava poikkeus tästä on IE8 ja aikaisemmat (katso yhteensopivuustaulukko).

Voit kuitenkin helposti tehdä tätä varten shimin:

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

Saadaksesi aikaleiman sekunteina voit käyttää:

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

Tai vaihtoehtoisesti voit käyttää:

Date.now() / 1000 | 0

Mikä olisi hieman nopeampaa, mutta myös vähemmän luettavaa (katso myös katso tämä vastaus).

Suosittelen käyttämään Date.now() (yhteensopivuusshimillä). Se on hieman parempi, koska se on lyhyempi & ei luo uutta Date-objektia. Jos et kuitenkaan halua leimaa &; maksimaalista yhteensopivuutta, voit käyttää menetelmää "old" saadaksesi aikaleiman millisekunteina:

new Date().getTime()

Jonka voit sitten muuntaa sekunneiksi näin:

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

Voit myös käyttää edellä esitettyä valueOf-menetelmää:

new Date().valueOf()

Aikaleima millisekunteina

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

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