残り時間カウントダウン表示 『あと○時間△分□秒』
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()どちらでもいいのでご意見お願いします
お礼
ご回答ありがとうございます。 そして早速試したところ、できました! これからも精進します。 本当にありがとうございました。