HTML文書に現在の日時を表示するスクリプトです。
スクリプトを実行できる環境なら、以下にこのページを開いた日時が表示されている筈です。対応していない環境では、何も表示されないでしょう。
日付を表示させる国内版スクリプト「DATE.js」は以下の通りです。
now=new Date();
yr=(now.getYear()<1000)? now.getYear()-88:now.getYear()-1988;
mo=now.getMonth()+1;
dy=now.getDate();
hr=now.getHours();
mt=now.getMinutes();
sd=now.getSeconds();
if (yr<10) { yr="0"+yr; }
if (mo<10) { mo="0"+mo; }
if (dy<10) { dy="0"+dy; }
if (hr<10) { hr="0"+hr; }
if (mt<10) { mt="0"+mt; }
if (sd<10) { sd="0"+sd; }
document.write('<p>現在、<em>平成'+yr+'年'+mo+'月'+dy+'日 '+hr+'時'+mt+'分'+sd+'秒</em>です。</p>');
以下、順番に解説してみます。
以下の一行目の処理で、現在の日時情報を取得します。
now=new Date();
具体的には、nowという変数に新しいDate型のオブジェクトを代入しています。Date型のオブジェクトには、日時に関する情報が入ります。「new Date()」は括弧内で特に指定しない場合、実行時の日時を表わす情報を与えます。
以下の部分では、Date型オブジェクトnowから年,月,日,時,分および秒の値をそれぞれ取り出しております。
yr=(now.getYear()<1000)? now.getYear()-88:now.getYear()-1988;
mo=now.getMonth()+1;
dy=now.getDate();
hr=now.getHours();
mt=now.getMinutes();
sd=now.getSeconds();
変数名=オブジェクト変数名.メソッド名(引数)
とすることで左辺の変数に特定の値を得ることが出来ます。
ところで、年号と月は単純に代入する訳には行きません。
年号の場合、ブラウザによりgetYear()メソッドには以下のような違いがあります。
このため、条件演算子で年号が四桁未満の場合は1900を加算した値を、そうでなければそのものの値を取得します。
この事を考えると、西暦年号を得るには以下のようにする必要があります。
yr=(now.getYear()<1000)? now.getYear()+1900:now.getYear();
今回は西暦ではなく和暦に変換するので、更に1988を差引いた値となります。
すなわち、以下のようにして和暦に換算します。
yr=(now.getYear()<1000)? now.getYear()-88:now.getYear()-1988;
一方月は0から始まった値となっており、予め1を足しておきます。
この後に続く以下の処理は、年月日と時分秒を二桁に統一する処理です。
if (yr<10) { yr="0"+yr; }
if (mo<10) { mo="0"+mo; }
if (dy<10) { dy="0"+dy; }
if (hr<10) { hr="0"+hr; }
if (mt<10) { mt="0"+mt; }
if (sd<10) { sd="0"+sd; }
具体的には、いずれも10より値が小さければ当該変数の前に「"0"」の文字列を連結すると言うものです。つまり、一桁の数値なら前に「0」を付けて二桁にするというものです。
文字列を連結するには「文字列1 + 文字列2」としてやります。
JAVAスクリプトでは数値変数を文字列とみなして処理する事も可能になっております。
最後の処理で結果をHTML文書に埋め込みます。
document.write('<p>現在、<em>平成'+yr+'年'+mo+'月'+dy+'日 '+hr+'時'+mt+'分'+sd+'秒</em>です。</p>');
すなわち、「<p>現在、<em>平成○年○月○日 ○時○分○秒</em>です。</p>」というHTMLをHTML文書の当該箇所に埋め込みます。
この場合、括弧内にはいくつもの文字列が連結されて出力される事になります。また、HTMLの要素タグも一緒に出力されているのが分かりますね。
尚、文字列定数は文字列を「"」か「'」で囲む事で明示します。
Copyright ©平成15年-平成24年 さいたま・しらぎくさいと 版権所有
marguerite.site@gmail.com