日付を表示させる(国内版)の国際版です。世界のどこでアクセスしても、日本時間を英語表示するもので、英語版のサイトをお持ちの方にお勧めします。
スクリプトを実行できる環境なら、以下にこのページを開いた日本時間の日時が英語で表示されている筈です。対応していない環境では、何も表示されないでしょう。
日付を表示させる国際版スクリプト「DATEi.js」は以下の通りです。
now=new Date();
tzo=(now.getTimezoneOffset());
now.setTime(now.getTime()+(tzo+540)*60*1000);
month=new Array();
month[0]="Jan.";
month[1]="Feb.";
month[2]="Mar.";
month[3]="Apr.";
month[4]="May ";
month[5]="June";
month[6]="July";
month[7]="Aug.";
month[8]="Sep.";
month[9]="Oct.";
month[10]="Nov.";
month[11]="Dec.";
yr=(now.getYear()<1000)? now.getYear()+1900:now.getYear();
mo=month[now.getMonth()];
dy=now.getDate();
hr=now.getHours();
mt=now.getMinutes();
sd=now.getSeconds();
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 lang="en-us" xml:lang="en-us">It is <em>'+mo+' '+dy+', '+yr+' '+hr+':'+mt+':'+sd+' JST</em>.</p>');
以下、順番に解説してみます。
以下の処理で、現在の日時情報を取得します。
now=new Date();
tzo=(now.getTimezoneOffset());
now.setTime(now.getTime()+(tzo+540)*60*1000);
一行目は、nowという変数に新しいDate型のオブジェクトを代入しています。Date型のオブジェクトには、日時に関する情報が入ります。「new Date()」は括弧内で特に指定しない場合、実行時の日時を表わす情報を与えます。
二行目は端末に設定されている現地時間と国際標準時との時差を得るものです。getTimezoneOffsetは国際標準時との時差を分単位で与えます。例えば日本国内の場合は国際標準時との差はマイナス 9時間ですので、以下の処理を行えば良い事になります。
now.getTimezoneOffset=-540(=9*60)
三行目では現地時間を日本時間に変換する処理を行っております。現地時間と国際標準時との時差に加えて日本時間と国際標準時の時差を加えたものを再度Dateオブジェクト変数nowに設定している訳です。
540(日本時間と国際標準時との時差・9時間の分単位)」に60*1000を掛けて千分の一秒単位に換算したものを加えて、setTimeメソッド()で再設定する訳です。
以下の処理で、現在の日時情報から年,月,日などの値を取得しております。
month=new Array();
month[0]="Jan.";
month[1]="Feb.";
month[2]="Mar.";
month[3]="Apr.";
month[4]="May ";
month[5]="June";
month[6]="July";
month[7]="Aug.";
month[8]="Sep.";
month[9]="Oct.";
month[10]="Nov.";
month[11]="Dec.";
yr=(now.getYear()<1000)? now.getYear()+1900:now.getYear();
mo=month[now.getMonth()];
dy=now.getDate();
hr=now.getHours();
mt=now.getMinutes();
sd=now.getSeconds();
前半は、月の英語表記を配列変数monthに設定しています。
配列変数は必ずnew Array()で宣言しなければなりません。また、配列変数は0から始まりますので、0から順に 1月, 2月…と代入して行く事になります。
後半は、Date型オブジェクトnowから年,月,日,時,分および秒の値をそれぞれ取り出しております。
ところで、年号と月は単純に代入する訳には行きません。
年号の場合、ブラウザによりgetYear()メソッドには以下のような違いがあります。
このため、条件演算子で年号が四桁未満の場合は1900を加算した値を、そうでなければそのものの値を取得します。
yr=(now.getYear()<1000)? now.getYear()+1900:now.getYear();
一方月は文字列となる為、前半で宣言した配列変数monthから取り出します。
以下の処理で、日と時分秒を二桁化します。
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」を付けて二桁にするというものです。
以下の処理で、結果をHTML文書に埋め込んでおります。
document.write('<p lang="en-us" xml:lang="en-us">It is <em>'+mo+' '+dy+', '+yr+' '+hr+':'+mt+':'+sd+' JST</em>.</p>');
Copyright ©平成15年-平成24年 さいたま・しらぎくさいと 版権所有
marguerite.site@gmail.com