Hallo,
getYear() gibt die seit 1900 vergangenen Jahre zurueck, also korrekt 104. Im IE ergibt diese Methode die aktuelle vierstellige Jahreszahl. Verwende getFullYear() und auch Mozilla zeigt 2004.
Und wiedereinmal der Beweis: Der IE ist zum wegschmeissen..
Verzeihung, aber was erwartet ein Programmierer wohl von einer Methode, die sich getYear nennt? Eine Jahreszahl seit 1900 anno domini zu liefern, ist mindestens so willkürlich, wie eine Jahreszahl nach dem französischen Revolutionskalender zurückzugeben o.ä.
Microsoft musste Netscapes JavaScript nicht eins zu eins implementieren, wenn es darin in einzelnen Punkten grobe konzeptionelle Fehler entdeckt. Und getYear war ein dummer Fehler. Der Fehler war nicht nur, dass zweistellige Jahreszahlen selten gebraucht werden. Die Regelung war in JavaScript/LiveScript 1.0 zunächst, dass vom AD-Jahr einfach 1900 subtrahiert werden (http://web.archive.org/web/19970801054156/home.netscape.com/eng/mozilla/2.0/handbook/javascript/ref_f-g.html#getYear_method). In JavaScript 1.1 sollten Daten ab 1999 nicht Jahreswerte über 99 liefern, sondern vierstellige Werte (http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/ref_f-g.htm#804). Schlussendlich ist man bei JavaScript 1.3 wieder zurück zur Javascript 1.0-Regelung (http://devedge.netscape.com/library/manuals/2000/javascript/1.3/reference/date.html#1194138), um getYear gleichzeitig als »deprecated« einzustufen und getFullYear aus dem ECMAScript-Standard einzuführen.
Microsoft hat in MSIE 3 getYear gemäß JavaScript 1.0 implementiert und ist in MSIE 4 auf JavaScript 1.1 umgestiegen (und ist damit Netscape zum zweiten Mal gefolgt). Dann blieb Microsoft aber bis heute bei der Javascript 1.1-Regelung.
Dass Mozilla hinsichtlich getYear an der alten JavaScript 1.0/1.3-Regelung klebt, ist mit Blick auf Kontinuität und Abwärtskompatibilität zwar klug und gewissermaßen notwendig. Dadurch wird die Regelung und deren Geschichte als solche aber trotzdem nicht besser. Und es stellt sich mir nicht so dar, als hätte Microsoft etwas falsch gemacht.
Mathias