[重要] これは古いバージョンです。現用のものはこちらです。
現在の年を調べる方法を復習しましょう。
<p>
<script type="text/javascript">
var now = new Date();
var Y = now.getFullYear();
document.write("今年は " + Y + "年です");
</script>
</p>
getFullYear() という関数はJavaScriptに比較的最近加えられたもので,古いブラウザでは使えません。古いブラウザで使えるのは getYear() という関数です。
<p>
<script type="text/javascript">
var now = new Date();
var Y = now.getYear();
document.write("今年は " + Y + "年です");
</script>
</p>
この getYear() という関数は,IEでは紀元0年からの年,FirefoxなどECMAscript系のブラウザでは紀元1900年からの年を返します。1900年代ではどちらでもよかったのですが,2000年代になると後者の出力ではまずくなります。いわゆる2000年問題ですね。
そこで,getYear()
の返す値が1900未満であれば1900を加える必要があります。
<p>
<script type="text/javascript">
var now = new Date();
var Y = now.getYear();
if (Y < 1900) Y += 1900;
document.write("今年は " + Y + "年です");
</script>
</p>
Y += 1900 は Y = Y + 1900 と書いても同じことです。
新しいブラウザでは getFullYear() を使えば4桁の年が得られます。
getFullYear() が使えるかどうかも if で調べられます。
<p>
<script type="text/javascript">
var now = new Date();
var Y;
if (now.getFullYear) {
Y = now.getFullYear();
} else {
Y = now.getYear();
if (Y < 1900) Y += 1900;
}
document.write("今年は" + Y + "年です");
</script>
</p>
このように if (now.getFullYear) で now に getFullYear()
があるかどうか調べられます。
もしなければ else 以下に飛びます。
逆に「もし getFullYear() がなければ……」という判断をする場合は if (!now.getFullYear)
とします。
! は not の意味です。
<p>
<script type="text/javascript">
var now = new Date();
var Y;
if (!now.getFullYear) {
Y = now.getYear();
if (Y < 1900) Y += 1900;
} else {
Y = now.getFullYear();
}
document.write("今年は" + Y + "年です");
</script>
</p>
時間がわからない場合も含めて条件判断してみます。
<p>
<script type="text/javascript">
var now = new Date();
var Y;
if (!now.getFullYear) {
Y = now.getYear();
if (Y && Y < 1900) Y += 1900;
} else {
Y = now.getFullYear();
}
if (Y) {
document.write("今年は" + Y + "年です");
} else {
document.write("今年は何年かわかりません");
}
</script>
</p>
Last modified: