Domanda Come si ottiene un timestamp in JavaScript?


Come posso ottenere un timestamp in JavaScript?

Qualcosa di simile al timestamp di Unix, cioè un numero singolo che rappresenta l'ora e la data attuali. O come numero o stringa.


3357
2017-10-21 09:29


origine


risposte:


Breve e Snazzy:

+ new Date()

Un operatore unario come plus innesca il valueOf metodo nel Date oggetto e restituisce il timestamp (senza alcuna alterazione).

Dettagli:

Su quasi tutti i browser correnti puoi usare Date.now() per ottenere il timestamp UTC in millisecondi; una notevole eccezione a questo è IE8 e precedenti (vedi tabella di compatibilità).

Puoi facilmente fare uno shim per questo, però:

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

Per ottenere il timestamp in secondi, Puoi usare:

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

In alternativa puoi usare:

Date.now() / 1000 | 0

Quale dovrebbe essere leggermente più veloce, ma anche meno leggibile (anche vedi questa risposta).

Consiglierei l'utilizzo Date.now() (con shim di compatibilità). È leggermente migliore perché è più breve e non crea una nuova Date oggetto. Tuttavia, se non si desidera uno spessore e la massima compatibilità, è possibile utilizzare il metodo "vecchio" per ottenere il timestamp millisecondi:

new Date().getTime()

Che puoi quindi convertire in secondi come questo:

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

E puoi anche usare il valueOf metodo che abbiamo mostrato sopra:

new Date().valueOf()

Timestamp in millisecondi

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


4147
2017-10-21 09:32



Mi piace, perché è piccolo:

+new Date

Mi piace anche perché è altrettanto breve ed è compatibile con i browser moderni e oltre 500 persone hanno votato che è meglio:

Date.now()

429
2018-02-18 00:33



JavaScript funziona con il numero di millisecondi dall'epoca, mentre la maggior parte degli altri linguaggi funziona con i secondi. Si potrebbe lavorare con millisecondi ma non appena si passa un valore per dire PHP, le funzioni native di PHP probabilmente falliranno. Quindi per essere sicuro di usare sempre i secondi, non i millisecondi.

Questo ti darà un timestamp Unix (in secondi):

var unix = Math.round(+new Date()/1000);

Questo ti darà i millisecondi dall'epoca (non il timestamp Unix):

var milliseconds = new Date().getTime();

229
2018-05-11 22:27



var time = Date.now || function() {
  return +new Date;
};

time();

126
2017-10-21 10:05



Fornisco più soluzioni con descrizioni in questa risposta. Sentiti libero di fare domande se qualcosa non è chiaro
PS: purtroppo qualcuno lo ha unito alla risposta principale senza dare credito.


Soluzione rapida e sporca:

Date.now() /1000 |0

avvertimento: esso potrebbe irrompere nel 2038 e restituire numeri negativi se si fa il |0 Magia. Uso Math.floor() invece a quel tempo


95
2017-07-12 07:15



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

69
2017-10-21 13:00



jQuery fornisce il suo metodo per ottenere il timestamp:

var timestamp = $.now();

(inoltre è solo un attrezzo (new Date).getTime() espressione)

REF:  http://api.jquery.com/jQuery.now/


50
2018-03-15 14:19



Giusto per aggiungere, ecco una funzione per restituire una stringa di timestamp in Javascript. Esempio: 15:06:38 PM

function displayTime() {
    var str = "";

    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {
        minutes = "0" + minutes
    }
    if (seconds < 10) {
        seconds = "0" + seconds
    }
    str += hours + ":" + minutes + ":" + seconds + " ";
    if(hours > 11){
        str += "PM"
    } else {
        str += "AM"
    }
    return str;
}

36
2017-09-21 19:12



console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch


34
2018-04-30 16:53



Oltre alle altre opzioni, se si desidera una dataformat ISO, si ottiene può ottenere direttamente

console.log(new Date().toISOString());


29
2018-01-29 15:08