電子書籍の厳選無料作品が豊富!

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()どちらでもいいのでご意見お願いします

A 回答 (2件)

こんにちは。



さてご質問にあった
----------------
『残り53495秒』
----------------
ですが、もし残り時間を「秒」で求める方法がおわかりになるのであれば、これ自体を「時・分・秒」に直してしまって表示したほうがシンプルになるのではないかな?と思いました。

残り「時間」 = (残り秒数÷3600)の整数部分
残り「 分 」 = ((残り秒数-(残り「時間」× 3600))÷ 60))の整数部分
残り「 秒 」 = 残り秒数-(残り「時間」× 3600)-(残り「 分 」× 60)

で変換できることと思います。ご検討を。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/04 21:41

検索したら


参考になるページがウジャウジャ出て来ますが。


イヌでもわかるJavaScript講座
「来年をカウントダウンする」
http://www.red.oit-net.jp/tatsuya/java/countdwn2 …

JavaScript訓練所
カウントダウン
http://www004.upp.so-net.ne.jp/sekiuchi/js/conte …

[CJ-Club]-[JavaScript]-カウントダウン
http://www.cj-c.com/java_s/java15.htm

カウントダウン (3)
http://www2s.biglobe.ne.jp/~Hiro/js/CountDown03. …


検索キーワード「カウントダウン JavaScript 秒」
    • good
    • 0
この回答へのお礼

回答ありがとうございます
800字を超えてた為すべての説明をすることができていませんでしたm(--)m

ご提示してもらったサイトはすべて見たことがありました(><)
new Date(2112,8,3)
のようにあらかじめ指定日設定されてますよね
これを自動で修正することはできるでしょうか?

ユーザーの行動によってこの指定日が違うので・・・

行動をしてるとある確率でプレイベントが発生
その時間をファイルに保存
ファイルからそのデータを取得
その時間から12時間後までのカウントダウンを表示
カウントが0になったら新イベント発生

という流れなのですが・・・

よろしければnew Date(○,△,□)の操作の仕方が分かれば教えてください
勉強を始めたばかりなのでよろしくお願いします

お礼日時:2007/02/03 21:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!