getYearとgetFullYear
javascriptで西暦を取得する場合getYearで取得すると書いてある資料をみたのでそのまま使っていたのだけれどIE6で動作に異常がでた。
どうやらDateオブジェクトのgetYearメソッドはブラウザによって動作がまちまちで、1900年からのオフセットを返すブラウザと西暦を返すブラウザがあるらしい。おかげで年を指定するフォームが大変なことに。2007-2009年を選択するフォームを定義したつもりが2007-3909年を選択するフォームになってしまった。
とりあえずどちらの動作でも動くように下のようにして対応した。
var year = (new Date()).getYear(); if (year < 1900) year += 1900; // 1900年からのオフセットなら1900を足して西暦に変える
このコードで動作を確認して満足していたのだけれどどうやら西暦を返すメソッドgetFullYearというメソッドがあるみたいだ。
var year = (new Date()).getFullYear();