Vraag Hoe krijg je een timestamp in JavaScript?


Hoe kan ik een timestamp in JavaScript krijgen?

Iets soortgelijks als het tijdstempel van Unix, dat wil zeggen een enkel getal dat de huidige tijd en datum vertegenwoordigt. Of als een cijfer of als een reeks.


3358
2017-10-21 09:29


oorsprong


antwoorden:


Kort & Snazzy:

+ new Date()

Een unaire operator zoals plus triggert de valueOf methode in de Date object en retourneert de tijdstempel (zonder enige wijziging).

Details:

Op bijna alle huidige browsers die u kunt gebruiken Date.now() om de UTC-tijdstempel in te voeren milliseconden; een opmerkelijke uitzondering hierop is IE8 en eerder (zie compatibiliteitstabel).

Je kunt hier gemakkelijk een shim voor maken:

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

Om de tijdstempel in te voeren seconden, je kunt gebruiken:

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

Of u kunt als alternatief gebruiken:

Date.now() / 1000 | 0

Die moet iets sneller zijn, maar ook minder leesbaar (ook zie dit antwoord).

Ik zou aanraden om te gebruiken Date.now() (met compatibele schijf). Het is iets beter omdat het korter is en geen nieuwe maakt Date voorwerp. Als u echter geen shim en maximale compatibiliteit wilt, kunt u de "oude" methode gebruiken om de tijdstempel in te voeren milliseconden:

new Date().getTime()

Die je vervolgens kunt converteren naar seconden als volgt:

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

En je kunt ook de valueOf methode die we hierboven hebben laten zien:

new Date().valueOf()

Tijdstempel in milliseconden

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


4148
2017-10-21 09:32



Ik vind dit leuk, omdat het klein is:

+new Date

Ik vind dit ook leuk, omdat het net zo kort is en compatibel is met moderne browsers, en meer dan 500 mensen hebben gestemd dat het beter is:

Date.now()

429
2018-02-18 00:33



JavaScript werkt met het aantal milliseconden sinds het tijdperk, terwijl de meeste andere talen met de seconden werken. Je zou met milliseconden kunnen werken, maar zodra je een waarde doorgeeft om PHP te zeggen, zullen de PHP-native functies waarschijnlijk falen. Dus om zeker te zijn gebruik ik altijd de seconden, geen milliseconden.

Dit geeft je een Unix timestamp (in seconden):

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

Dit geeft je de milliseconden sinds het tijdperk (niet Unix timestamp):

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



Ik geef meerdere oplossingen met beschrijvingen in dit antwoord. Aarzel niet om vragen te stellen als iets onduidelijk is
PS: helaas heeft iemand dit samengevoegd tot het beste antwoord zonder daarvoor de eer te hebben gekregen.


Snelle en vuile oplossing:

Date.now() /1000 |0

Waarschuwing: het macht breken in 2038 en negatieve getallen retourneren als je de |0 magie. Gebruik Math.floor() in plaats daarvan tegen die tijd


95
2017-07-12 07:15



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

69
2017-10-21 13:00



jQuery biedt zijn eigen methode om het tijdstempel te krijgen:

var timestamp = $.now();

(daarnaast implementeert het gewoon (new Date).getTime() uitdrukking)

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


50
2018-03-15 14:19



Gewoon om op te tellen, hier is een functie om een ​​timestamp-string in Javascript terug te zetten. Voorbeeld: 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