イヌでもわかるJavaScript講座
|
Step.49 - 指定日までの日数をカウントダウンする
|
指定日までの残日数を表示してみます。 |
Step テーマ ● Step.19 のおさらい (getTime) |
実行例 |
リスト<script type="text/javascript"><!-- function myCountDown( myYear, myMonth, myDay ){ myNow = new Date(); myRunDate = new Date( myYear , myMonth-1 , myDay ); myMsec = myNow.getTime() - myRunDate.getTime(); myDayCount = Math.floor( myMsec / (1000*60*60*24) ); return myDayCount; // 指定日も1日と数える場合は1を足します(myDayCount+1) } // --></script> <script type="text/javascript"><!-- myDay = myCountDown( 2112, 9, 3 ); if ( myDay < 0 ) document.write( "ドラえもん誕生まで、あと", myDay*(-1), "日です" ); else if (myDay == 0) document.write( "本日は ドラえもんの誕生日です!" ); else document.write( "ドラえもんが誕生して、", myDay, "日が経過しました" ); // --></script> |
サンプルだけの HTMLは こちらへ |
説明指定日まで、あと何日かを計算して表示します。ベースは、Step.19 です。 パラメータに、年、月、日を指定すれば、その日までの日数を戻す関数、myCountDown() を作りました。 myCountDown( 2112, 9, 3 ); と指定すれば、 を戻します。 myCountDown() は、Step.19 を参照してくださいませ。ほぼ、同じものです。(^^; myCountDown() は、 日付パラメータが未来であれば、その日までのマイナスの日数を返します。 日付パラメータが今日であれば、0を返します。 日付パラメータが過去になってしまえば、プラスの経過日数を返します。 カウントダウンも あっという間に その日が近づいて、ホームページの更新も手を抜いていれば その日が過ぎてしまってます。 ならば、この3パターンを最初っから プログラムに組み込んでおきましょう。 サンプルでは、 ドラえもん誕生まで、あと xx日です 本日は ドラえもんの誕生日です! ドラえもんが誕生して、xx日が経過しました の3通りをあらかじめ、プログラムしています。 myDay = myCountDown( 2112, 9, 3 ); if ( myDay < 0 ) document.write( "ドラえもん誕生まで、あと", myDay*(-1), "日です" ); else if (myDay == 0)document.write( "本日は ドラえもんの誕生日です!" ); else document.write( "ドラえもんが誕生して、", myDay, "日が経過しました" ); 指定日が未来であれば、マイナス値なので、-1 を myDay に掛けてプラスにして表示します。 if ( myDay < 0 ) document.write( "ドラえもん誕生まで、あと", myDay*(-1), "日です" ); 参考ステップ Step.19 誕生日から何日経過したか計算してみましょう Step.48 実施日から何日経過したかカウントアップしてみましょう Step.69 来年へのカウントダウンを表示してみましょう |
Q&A[Q] 週替わりメッセージを教えてください。 ≪用件≫ 私の部署で、とある業務に3人の人間が関わっております。 業務の担当は1週間(月曜日〜日曜日)ごとに交代します。 以上を繰り返し担当します。 つまり 2007/1/7〜200/1/13 担当:Aさん 2007/1/14〜200/1/20 担当:Bさん 2007/1/21〜200/1/27 担当:Cさん 2007/1/28〜200/2/3 担当:Aさん 2007/2/4〜200/2/10 担当:Bさん …Cさん …Aさん …Bさん …Cさん といった具合です。 これを「今週は Aさん が担当です」とHP上に表示させたいのです。 [A] このステップの myCountDown を使えば、いけそうです。 【リスト】 <script type="text/javascript"><!-- myTantoName = new Array( // 担当者名をセットしてください。 "A", "B", "C" ); myDay = myCountDown( 2007, 1, 7 ); // 基準日をセットしてください。 myAmari = ( myDay % (myTantoName.length * 7) ); // 基準日から何週目を求める myTantoNo = Math.floor( myAmari / 7 ); // 担当者の配列番号を求める document.write("今週は、" + myTantoName[myTantoNo] + "さんが担当です。"); // --></script> 【実行結果】 【説明】 基準日からの経過日を求めます。 myDay = myCountDown(2007,1,7); myDay の値は、「 」 経過日で、0〜6日がAさん、7〜13日がBさん、14〜20日がCさんの担当です。 しかし、4週目に入ったときは、経過日は 21〜27日となってしまいます。この週は、再び、Aさんの週です。 そこで、「経過日を (担当者の数 x 7) で割った余り」を使えば、何週経とうが、経過日は 0から20の値となりますので、担当者が割り出せそうです。 myDay = myCountDown( 2007, 1, 7 ); myAmari = ( myDay % 21 ); myAmari の値は、「 」 担当者名を配列に格納しているので、 myTantoName = new Array("A", "B", "C"); 0〜6日は配列番号= 0 、7〜13日は配列番号= 1、14〜20日は配列番号=2、という数値がほしいとなると、myAmari を 7 で割れば、願いがかないます。 myTantoNo = Math.floor(myAmari / 7); myTantoNo の値は、「 」 Math.floor は、小数点切捨てです。 |