JavaScriptのgetYear()メソッドに関する2000年問題について、以前にも一度紹介したことがあるのですが、2000年が近づいてきたのでもう一度紹介しておきます。
getYear()を使用している人の何割かは次のようなスクリプトを書いていると思います。
dd = new Date();
year = 1900 + dd.getYear();しかし、このスクリプトは2000年問題を引き起こします。Internet Explorer 3.0 や、Netscape Navigator 2.0 では上記のスクリプトで問題無かったのですが、Netscape Navigator 3.0 および、それを引き継いだ Internet Explorer 4.0 で、大きな仕様変更が行われました。
NN2.0/IE3.0: getYear()は、常に1900年からの差分を返します。
1999年 → 99
2000年 → 100NN3.0/NN4.0/IE4.0/IE5.0: getYear()は、1999年までは1900年からの差分、2000年以降は西暦をそのまま返します。
1999年 → 99
2000年 → 2000しかし、この仕様変更がよほど不評だったのか、NN4.5(おそらくNN4.06も)では、再度、仕様を元に戻しているようです。
NN4.06/NN4.5: getYear()は、常に1900年からの差分を返します。
という訳で、上記のようなスクリプトをNN4.0やIE5.0で2000年に動かすと、1900 + 2000 で 3900年だと計算してしまいます。
getFullYear()は常に4桁の西暦(10000年を超えると5桁ですが)を返してくれるので扱いやすいですが、Internet Explorer 3.0やNetscape Navigator 2.0はこのメソッドをサポートしていません。これらのブラウザが完全に無くなる(せめて1.0%以下の使用率になる)まで、getFullYear()の使用は控えるべきでしょう。したがって、4桁の西暦を求めるには、次のようにすることをオススメします。
dd = new Date();
year = dd.getYear();
if (year < 2000) { year += 1900; }