• ベストアンサー

残り時間カウントダウン表示 『あと○時間△分□秒』

CGIゲーム内であるイベントが発生してから12時間後に新イベントが自動発生するスクリプトを作りたいのですが ネット検索をしても残り日数表示しかなくてサンプルがないので創ってみたのですが <body onLoad="count()" onUnload="clearTimeout()"> $ENV{'TZ'} = "JST-9"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); <=現在の時間 $date="0,0,11,3,0,107,0,27,0 485,197,854,"; <=保存されたプレイベント発生時間 foreach($date){ ($sc,$mi,$ho,$md,$mo,$ye,$wd,$yd,$isd)=split(/,/); } print <<"EOM"; <SCRIPT language="JavaScript"> <!-- cnt = $sc-$sec; cnt1=$mi-$min; if($ho>$hour){cnt2=$ho-$hour-12;} else{cnt2=$ho-$hour+12;} if(cnt2>12){cnt2=cnt2-12;} if(cnt<0){cnt=cnt+59; cnt1=cnt1-1;} if(cnt1<0){cnt1=cnt1+59; cnt2=cnt2-1;} if(cnt2<0){cnt=0;cnt1=0;cnt2=0;} function count(){ document.form.box.value = cnt2+"時間"+cnt1+"分"+cnt+"秒"; cnt--; if(cnt<0){cnt=cnt+60; cnt1=cnt1-1;} if(cnt1<0){cnt1=cnt1+60; cnt2=cnt2-1;} if(cnt2<0){cnt=0;cnt1=0;cnt2=0;} if(cnt2 >=0) { if(cnt1 >=0) { if(cnt >=0) { setTimeout("count()",1000); }}} } //--> </SCRIPT> <FORM name="form"> あと<INPUT type="text" name="box" size="17">です </FORM> EOM とりあえず表示はできた(と思う)のですがもっと楽で確実な方法はありますでしょうか?(モジュールとかは使わずに) または上記のスクリプトすぐに思いつかなかったのでtime()で計算してたのですが 『残り53495秒』(適当)のような表記方法しか分かりません これを○時間△分□秒のように変換してカウントダウンできるでしょうか? localtime()、time()どちらでもいいのでご意見お願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.2

こんにちは。 さてご質問にあった ---------------- 『残り53495秒』 ---------------- ですが、もし残り時間を「秒」で求める方法がおわかりになるのであれば、これ自体を「時・分・秒」に直してしまって表示したほうがシンプルになるのではないかな?と思いました。 残り「時間」 = (残り秒数÷3600)の整数部分 残り「 分 」 = ((残り秒数-(残り「時間」× 3600))÷ 60))の整数部分 残り「 秒 」 = 残り秒数-(残り「時間」× 3600)-(残り「 分 」× 60) で変換できることと思います。ご検討を。

leap_day
質問者

お礼

御礼が遅くなってすみません 上記の計算方法試したところ、うまく表示することができました とりあえずこれでやってJavascriptでの計算方法も勉強していきたいと思います お世話になりました

その他の回答 (1)

noname#35109
noname#35109
回答No.1

検索したら 参考になるページがウジャウジャ出て来ますが。 イヌでもわかるJavaScript講座 「来年をカウントダウンする」 http://www.red.oit-net.jp/tatsuya/java/countdwn2.htm JavaScript訓練所 カウントダウン http://www004.upp.so-net.ne.jp/sekiuchi/js/contents/tcd.html [CJ-Club]-[JavaScript]-カウントダウン http://www.cj-c.com/java_s/java15.htm カウントダウン (3) http://www2s.biglobe.ne.jp/~Hiro/js/CountDown03.html 検索キーワード「カウントダウン JavaScript 秒」

leap_day
質問者

お礼

回答ありがとうございます 800字を超えてた為すべての説明をすることができていませんでしたm(--)m ご提示してもらったサイトはすべて見たことがありました(><) new Date(2112,8,3) のようにあらかじめ指定日設定されてますよね これを自動で修正することはできるでしょうか? ユーザーの行動によってこの指定日が違うので・・・ 行動をしてるとある確率でプレイベントが発生 その時間をファイルに保存 ファイルからそのデータを取得 その時間から12時間後までのカウントダウンを表示 カウントが0になったら新イベント発生 という流れなのですが・・・ よろしければnew Date(○,△,□)の操作の仕方が分かれば教えてください 勉強を始めたばかりなのでよろしくお願いします