2012-03-28 7 views
1

Ich vermisse etwas, aber ich kann keinen Hinweis online finden. Wenn ich die Funktion getTime() von Javascript verwende, scheint es nicht von 1970, 01, 01, 0, 0, 0, 0 zu zählen, also Mitternacht 1970, sondern von 1969, 12, 01, 1, 0, 0, 0Javascript die Funktion getTime() zeigt falsche Werte?

I eingerichtet folgendes:

var d = new Date(1970, 01, 01, 0, 0, 0, 0); 
alert(d.getTime()); 

mit Idee in meinem Kopf, dass ich 0 bekommen sollte (da keine Zeit vergangen). Aber ich bekomme 2674800000 ms

Wenn ich gesetzt:

var d = new Date(1969, 12, 01, 1, 0, 0, 0); 
alert(d.getTime()); 

ich 0 ms

ich mit der Funktion auch auf W3C-Website gespielt und das Ergebnis ist das gleiche.

Auch wenn ich Differenz zwischen zwei Daten berechnen - jetzt und Anfang dieses Jahres, ist es nicht korrekten Wert zurück:

var Now = new Date(); 
var Begin = new Date (Now.getFullYear(), 01, 01); 
var dif = Now.getTime() - Begin.getTime(); 
alert(dif); 

ich miliseconds erhalten, die auf ca. entsprechen. 59 Tage

Ich bin mir ziemlich sicher, dass ich etwas nicht sehe, da ich immer noch ein Programmierkind bin. Ich freue mich über Kommentare

Antwort

2

Sie haben zwei Fehler, die zusammen den Fehler verursachen, den Sie sehen. Erstens, der Monat ist nullindiziert, also entspricht Januar 0 (wie Sie aus dem Beispiel here für ihr Beispiel vom 14. Januar 2010 sehen können). Zweitens ist Ihr Browser auf eine bestimmte Zeit eingestellt, die den Fehler verursacht. Ich bin in PST, also hier ist, was ich bekomme.

a = new Date("January 1, 1970") 
    Thu Jan 01 1970 00:00:00 GMT-0800 (PST) 
a = new Date("January 1, 1970 GMT") 
    Wed Dec 31 1969 16:00:00 GMT-0800 (PST) 
a.getTime() 
    0 
+0

Danke für schnelle und konstruktive Antwort! Ich wusste, dass es etwas so grundlegendes sein musste :) Ich hatte das Gefühl, dass eine Stunde Unterschied in der Zeitzone liegt, aber der Unterschied in der Erklärung des Monats als Name oder Nummer ist mir einfach nicht aufgefallen. Prost, Kumpel – vucibatina