イヌでもわかるJavaScript講座
|
Step.97 - 明日は何の日?
|
明日は何の日かを表示してみます。 |
Step テーマ ● setDate()、getDate() |
実行例明日の行事 |
リスト
|
サンプルだけの HTMLは こちらへ |
説明Q:"明日は何の日か” を表示できますか? 「今日は何の日か」を、Step.91で表示してみました。しかし、これを「明日は何の日か」に変更しようとすると簡単なようだけど簡単にできません。 なぜならば、1を足すだけでは月の変わり目でつまずいてしまいます。 Step.22の月間カレンダーを作ったときのように「うるう年」まで考慮して力ずくでプログラムを作るのも王道ですが、今回は楽な方法でやってみましょう。 サンプルは、Step.91の完全コピペです。ソースの違いを見れば今回の変更は簡単そうだけど、やっぱり簡単だったということです。 Step.91に次の2行が追加されただけです。 myD = new Date(); myDate = myD.getDate(); myD.setDate(myDate+1) ; myMonth = myD.getMonth()+1; myDate = myD.getDate(); 日付オブジェクト Date()メソッドに get…がいろいろありますよね。これに対して set…メソッドがあります。見て字のごとく、ゲットに対してセットです。 別にパソコン時計を変更するわけではありません。指定した日の情報を取得させるためだけのことです。 ん? そういえば、どっかのステップで同じことを説明したような…。 myDate = myD.getDate(); myD.setDate(myDate+1) ; myDate = myD.getDate(); 「ん?だから、『日』に1を足すだけだったら、『月』の変わり目がダメでしょ!」 「いえ、いまどきのプログラム言語等はこのような範囲外データを親切に訂正してくれるんです。」 例えば、2000年2月28日に「1日」を足して見ましょう myD = new Date(2000,1,28); myYear = myD.getYear(); myMonth = myD.getMonth() + 1; myDate = myD.getDate(); document.write( "今日は"+myYear+"年 "+myMonth+"月"+myDate+"日"); myD.setDate(myDate+1); myYear = myD.getYear(); myMonth = myD.getMonth() + 1; myDate = myD.getDate(); document.write( "明日は"+myYear+"年"+myMonth+"月"+myDate+"日"); myD.setDate(myDate+1); myYear = myD.getYear(); myMonth = myD.getMonth() + 1; myDate = myD.getDate(); document.write( "あさっては"+myYear+"年"+myMonth+"月"+myDate+"日"); ↓ つまり、訂正してくれるとは、例えば「秒」に「100秒」をセットした場合は「1分」と「40秒」に修正してくれるのです。 「10時10分10秒」に setSeconds(100) を処理すると、 myD = new Date(2000,1,1,10,10,10); myD.setSeconds(100); myHours = myD.getHours(); myMinutes = myD.getMinutes(); mySeconds = myD.getSeconds(); document.write( myHours+"時"+myMinutes+"分"+mySeconds+"秒"); ↓ ※【注意】IE3 , NS2-4.05 はこのような処理には対応していません。 そのほか、こんなやり方も考えられますね。 myMsec = myD.getTime() ; myMsec = myMsec + (1000*60*60*24) ; myD.setTime(myMsec) ; 参考ステップ Step.3 現在の日付と時間を表示してみましょう Step.19 誕生日から何日経過したか計算してみましょう Step.91 本日の行事を表示してみましょう |
リファレンス●Dateオブジェクト 【書式】 myObj = new Date() myObj = new Date(日付値) myObj = new Date(年,月,日,時,分,秒,ミリ秒) 【パラメータ】 日付値(数値の場合):1970/1/1 0:0:0:00 からの経過ミリ秒、もしくはUTC日付データ 日付値(文字列の場合):日付文字列 日付値(ActiveXオブジェクトの場合):VT_DATE値 年:4桁の西暦数値 月:0-11の数値 (0=1月、1=2月…) 日:1-31の数値 時:0-23の数値 分:0-59の数値 秒:0-59の数値 ミリ秒:0-999の数値 パラメータを省略した場合は、現在日付(UTC)を取得します。 【メソッド】
※UTC:世界協定時刻 ※GMT:グリニッジ標準時 ※日付文字列は国設定やOS、ブラウザ、バージョンで日付表記が異なります。 ※getUTCxxx、setUTCxxxメソッドは IE3 , NS2.0-4.05 未対応。 |