2013-03-14 14 views
13

Was ist der Unterschied zwischen der Verwendung von new Date() und new Date().getTime() beim Subtrahieren von zwei Zeitstempeln? (test script on jsFiddle)Datum() vs Datum(). GetTime()

die beiden folgenden gibt die gleichen Ergebnisse:

var prev1 = new Date(); 
setTimeout(function() { 
    var curr1 = new Date(); 
    var diff1 = curr1 - prev1; 
}, 500); 

var prev2 = new Date().getTime(); 
setTimeout(function() { 
    var curr2 = new Date().getTime(); 
    var diff2 = curr2 - prev2; 
}, 500); 

Gibt es einen Grund, warum ich übereinander vorziehen sollte?

+0

Kein Unterschied AFAIK 'new Date()' gibt die Zeit in ms bei Instanziierung zurück. – elclanrs

+0

duplizieren: http://Stackoverflow.com/questions/12517359/just-sytnax-date-now-vs-date-gettime – Moe

+1

@Moe Ich frage 'neues Date()' vs 'neues Date(). GetTime() ', nicht' Date.now() '. – Antony

Antwort

45

ich, dass es nicht in Ihre Fragen war, aber Sie können Date.now() betrachten, die am schnellsten ist, weil Sie nicht ein neues Date Objekt instanziiert müssen, die folgenden für einen Vergleich der verschiedenen Versionen finden Sie unter: http://jsperf.com/date-now-vs-new-date-gettime/8

Der obige Link zeigt new Date() Verwendung ist schneller als (new Date()).getTime(), aber die Date.now() ist schneller als sie alle.

Browser-Unterstützung für Date.now() ist nicht einmal so schlecht (IE9 +):

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/now

+0

Aus irgendeinem Grund zeigt jsperf, dass '(new Date()). GetTime()' ist schneller, als '+ new Date();' irgendeine Idee warum? –

4

wenn Sie ein neues Date() erstellen Objekt, das es automatisch auf die aktuelle Zeit initialisiert wird.

Von W3Schools:

new Date() // current date and time 
new Date(milliseconds) //milliseconds since 1970/01/01 
new Date(dateString) 
new Date(year, month, day, hours, minutes, seconds, milliseconds) 

Die getTime() Funktion einfach die Zeit zurückgibt.

Von W3Schools:

Date.getTime() // method returns the number of milliseconds between midnight of January 1, 1970 and the specified date. 

http://www.w3schools.com/jsref/jsref_obj_date.asp

+0

Ich bin mir nicht sicher, ob mein Leseverständnis ausgeschaltet ist oder ob Sie 'getTime()' nicht korrekt erklären. Es klingt wie Sie sagen, der Wert von getTime() wird zwischen dem Zeitpunkt wechseln, wenn das Objekt "Date" erstellt wird, wenn die Funktion aufgerufen wird. Das hast du nicht gemeint, oder? –

+0

war es, aber ich lag falsch ... Ich änderte die Antwort –

3

Datum Arithmetik konvertiert Daten Epoch Zeit (Millisekunden seit dem 1. Januar 1970), weshalb funktionell die beiden Code-Snippets gleich sind.

Für was ist schneller, ist Jamund Ferguson die Antwort richtig.

Verwandte Themen