[重要] これは古いバージョンです。現用のものはこちらです。
現在の年を調べる方法を復習しましょう。
<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: