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


来年をカウントダウンする

来年の元旦まで、あと何日かをリアルタイムに秒単位に表示します。
難易度:★★☆☆☆☆☆☆☆☆
【実行例】

来年まで、あと、 です

【リスト】
<script language="JavaScript"><!--
function myFunc(){
   myD   = new Date();                              // 現在時刻 取得
   myYear=(myD.getYear()<2000)?1900+myD.getYear() : myD.getYear(); // 今年の'年'
   myNextYear = new Date( myYear+1 , 0 , 1 );     // 来年の1月1日の経過秒を取得
   myMsec = myNextYear.getTime()-myD.getTime();
   myNextDay  = Math.floor(myMsec/(1000*60*60*24)); // カウントダウン用 '日' 取得
   myMsec     -= (myNextDay*(1000*60*60*24));       // 経過秒から'日'を引く
   myNextHour = Math.floor(myMsec/(1000*60*60));    // カウントダウン用 '時' 取得
   myMsec     -= (myNextHour*(1000*60*60));         // 経過秒から'時'を引く
   myNextMin  = Math.floor(myMsec/(1000*60));       // カウントダウン用 '分' 取得
   myMsec     -= (myNextMin*(1000*60));             // 経過秒から'分'を引く
   myNextSec  = Math.floor(myMsec/1000);            // カウントダウン用 '秒' 取得
   myDisp = "";                                     // 時間バッファ クリア
   if (myNextDay  != 0)myDisp+=myNextDay+"日と ";   // 0日なら表示しない
   if (myNextHour != 0)myDisp+=myNextHour+"時間 ";  // 0時間なら表示しない
   if (myNextMin  != 0)myDisp+=myNextMin+"分 ";     // 0分なら表示しない
   myDisp+=myNextSec+"秒";                          // 秒セット
   document.myForm.myFormDate.value = myDisp;       // 時間をセット(表示)
   setTimeout("myFunc()",1000);                     // 1秒単位で動かす
}
// --></script>

<form name="myForm">
  <p>来年まで、あと、 
  <input type="text" size="35" name="myFormDate">です
  <script language="JavaScript"><!--
      myFunc();
  // --></script>
  </p>
</form>

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

来年をリアルタイムでカウントダウン表示してみます。
今回も、変わったことはしていません。

Step.5 の 「フォームを使って日付と時刻をリアルタイムに表示してみましょう」 か、
Step.49 の 「予定日まで あと何日かカウントダウンしてみましょう」 を いじれば出来上がりです。

とくに、説明もいらないでしょう。なんか、このプログラムは適当です。もっとスマートな計算方法(算数)があれば、迷わず自分のやり方で時刻を割り出してみましょう。

ちなみに、このプログラムでは、来年の0時0分00秒になったら、再来年のカウントダウンをはじめますね。(^^;

目次へ戻ります