Anscheinend gibt die Methode getYear () des javascript date objects ein anderes Ergebnis zwischen IE8 und Firefox3.6 zurück (Ich habe diese 2 auf meinem Rechner, bin mir nicht sicher, ob es ein anderer Browser oder eine andere Version ist)
%Vor%Ich habe nur auf Firefox getestet und jetzt meinen Javascript-Code, der den Rückgabewert von getYear () anpasst, gibt mir 3911 wegen meiner Codierung.
%Vor%Auf Firefox gibt es 2011 zurück. Aber wenn ich diesen Ansatz auf IE8 anwende, gibt es 3911 zurück.
Ich könnte Logik hinzufügen, um IE und Firefox zu unterscheiden, aber ich möchte solche if / else nirgendwo in meinem Code hinzufügen, wo immer browserabhängige Teile wie diese sind. Gibt es eine andere Möglichkeit, dieses Problem anzugehen?
%Vor%versuche stattdessen getFullYear () anstelle von getYear
zu verwenden Wenn IE8 Ihnen 2011 gibt, Es ist ein Fehler in IE8 (und früher, siehe Update unten) . getYear
ist in der Spezifikation (Abschnitt B.2.4) definiert als:
NaN
ist, geben Sie NaN
. YearFromTime(LocalTime(t)) − 1900
zurück. Also gerade jetzt ist 111 der richtige Wert. Diese Definition ist seit der 3. Ausgabe unverändert, wir sprechen also von 12 Jahren spezifizierten Verhaltens.
Wie andere bereits gesagt haben, verwenden Sie getFullYear
, um einen nützlicheren Wert zu erhalten, aber das ist ein IE8-Fehler , wenn er wirklich so ist, wie Sie es sagen (IE8 ist nicht zu überprüfen) .
Update : Nun, ich werde sein. Habe es einfach ausprobiert und Microsoft hat es falsch verstanden. IE6, IE7 und IE8 sagen alle "2011". Die gute Nachricht ist, dass sie es endlich behoben haben, IE9 sagt "111", wie es sollte. Sie können es in Ihrem Browser hier versuchen: Ссылка
Verlassen Sie sich nicht auf Produktversionen, wenn Sie es nicht müssen. Verlassen Sie sich stattdessen auf den Unterschied, den Sie selbst korrigieren möchten. Wenn Sie den korrekten Wert von getYear
hätten, könnten Sie ihn mit
Ich weiß, dass Leute einen besseren Weg vorgeschlagen haben, um das Ergebnis zu erhalten, aber ich dachte, dass die tatsächliche Frage es wert war, zu beantworten.
Tags und Links javascript date browser-detection