【説明】
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 未満だったら、myYear に 1900 を足した値 を myYear4 へ、セットします。違ったら、myYear を myYear4 へ、セットします。
これで、すべてのブラウザで、変数 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] + "曜日" ;
上の式のように、文字と文字を足すというのは、文字をくっつけるということです。
"月" + "曜日" は "月曜日" です。
|