目次へ戻ります
イヌでもわかるJavaScript講座


日付や時間を取得/表示します

現在の年月日時分秒を取り出して表示してみましょう。これだけだと、あまりに簡単すぎるので曜日も表示してみましょう。
難易度:★★★☆☆☆☆☆☆☆
【実行例】

【リスト】
<script language="JavaScript">
<!--
myTbl     = new Array("日","月","火","水","木","金","土");
myD       = new Date();

myYear    = myD.getYear();
myYear4   = (myYear < 2000) ? myYear+1900 : myYear;
myMonth   = myD.getMonth() + 1;
myDate    = myD.getDate();
myDay     = myD.getDay();
myHours   = myD.getHours();
myMinutes = myD.getMinutes();
mySeconds = myD.getSeconds();

myMess1   = myYear4 + "年" + myMonth + "月" + myDate + "日";
myMess2   = myTbl[myDay] + "曜日";
myMess3   = myHours + "時" + myMinutes + "分" + mySeconds + "秒";
myMess    = myMess1 + " " + myMess2 + " " + myMess3;
document.write( myMess );
// -->
</script>

サンプルだけのHTMLは こちらへ
【説明】

myD = new Date( ) ;

new Date( ) で、現在時刻を取得します。 myD には、その日付時間情報が入ります。

この myD には、日付に関しての部品がいろいろ詰まっています。それらの部品を使いながら、必要なデータ(年、月、日、時、分、秒、曜日)をそれぞれ、1つずつ抜き出していきます。
myYear    = myD.getYear();     // 年
myMonth   = myD.getMonth()+1;  // 月
myDate    = myD.getDate();     // 日
myDay     = myD.getDay();      // 曜日
myHours   = myD.getHours();    // 時
myMinutes = myD.getMinutes();  // 分
mySeconds = myD.getSeconds();  // 秒


『 年 』には、ブラウザ問題があります。
例えば、現在が西暦2000年だとすると、ブラウザや、そのバージョンによって、2000を返すのは当然ですが、100を返すブラウザもあります。

myYear = myD.getYear( ) ;
例えば、現在が西暦2000年だとすると、myYear には、2000、もしくは、100 のどちらかがセットされています。
どちらの数値が入っているかは、このままでは分かりません。

なお、あなたのブラウザは、myYear は、『 』 がセットされています。

とにかく、正確な4桁の西暦にするために、
myYear4 = (myYear < 2000) ? myYear+1900 : myYear ;
としました。

これは条件演算子といって、変数=(条件式)?真の値:偽の値 ; という書式です。

(myYear < 2000) が条件式です。

あいだの 『 < 』 は、右と左を比較する 『 』です。『 < 』以外にも、次の『 』があります。

A > B A は B より大きい
A < B A は Bより小さい
A >= B A は B以上
A <= B A は B以下
A == B A と Bは等しい
A != B A と Bは等しくない


myYear4 = (myYear<2000) ? myYear+1900 : myYear ;

条件式が成り立っていれば、真の値を変数へセット、成り立っていなければ、偽の値を変数へセットします。

( 条件式 ) → ( myYear < 2000 )
真の値 → myYear + 1900
偽の値 → myYear

つまり、年( myYear ) が 2000 未満だったら、myYear1900 を足した値 を myYear4 へ、セットします。違ったら、myYearmyYear4 へ、セットします。

これで、すべてのブラウザで、変数 myYear4 に 4桁の西暦が取得できました。


『 月 』にも、ひとつ問題があります。
月は 1月から12月ですが、getMonth( ) の値は 0月から11月になっています。
要するに 1を足せば、1〜12になります。
myMonth = myD.getMonth( ) + 1 ;


『 曜日 』は、0から6の数値がセットされています。
日曜日は0、月曜日は1、火曜日は2 ・・・ となります。
数値を表示しても意味がないので配列を使って、「×曜日」に置き換えます。

myTbl = new Array( "日" , "月" , "火" , "水" , "木" , "金" , "土" ) ;
は、下と同じ結果です。Step.2 の あいさつ文表示の時は、下の方が逆に使いやすいですね。

myTbl = new Array(7) ;
myTbl[0] = "日" ;
myTbl[1] = "月" ;
myTbl[2] = "火" ;
myTbl[3] = "水" ;
myTbl[4] = "木" ;
myTbl[5] = "金" ;
myTbl[6] = "土" ;


myMess3 = myTbl[myDay] + "曜日" ;

上の式のように、文字と文字を足すというのは、文字をくっつけるということです。
"月" + "曜日" "月曜日" です。

目次へ戻ります