Home > イヌでもわかるJavaScript講座 お品書き
イヌでもわかるJavaScript講座 お品書き へ戻ります
イヌでもわかる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 は、小数点切捨てです。


 
イヌでもわかるJavaScript講座 お品書き へ戻ります