
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()どちらでもいいのでご意見お願いします
No.2ベストアンサー
- 回答日時:
こんにちは。
さてご質問にあった
----------------
『残り53495秒』
----------------
ですが、もし残り時間を「秒」で求める方法がおわかりになるのであれば、これ自体を「時・分・秒」に直してしまって表示したほうがシンプルになるのではないかな?と思いました。
残り「時間」 = (残り秒数÷3600)の整数部分
残り「 分 」 = ((残り秒数-(残り「時間」× 3600))÷ 60))の整数部分
残り「 秒 」 = 残り秒数-(残り「時間」× 3600)-(残り「 分 」× 60)
で変換できることと思います。ご検討を。
御礼が遅くなってすみません
上記の計算方法試したところ、うまく表示することができました
とりあえずこれでやってJavascriptでの計算方法も勉強していきたいと思います
お世話になりました

No.1
- 回答日時:
検索したら
参考になるページがウジャウジャ出て来ますが。
イヌでもわかる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 秒」
回答ありがとうございます
800字を超えてた為すべての説明をすることができていませんでしたm(--)m
ご提示してもらったサイトはすべて見たことがありました(><)
new Date(2112,8,3)
のようにあらかじめ指定日設定されてますよね
これを自動で修正することはできるでしょうか?
ユーザーの行動によってこの指定日が違うので・・・
行動をしてるとある確率でプレイベントが発生
その時間をファイルに保存
ファイルからそのデータを取得
その時間から12時間後までのカウントダウンを表示
カウントが0になったら新イベント発生
という流れなのですが・・・
よろしければnew Date(○,△,□)の操作の仕方が分かれば教えてください
勉強を始めたばかりなのでよろしくお願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウンで選択された値を別...
-
子ウィンドウを閉じるとき、親...
-
VBScriptでpingを実行(ブラウザ...
-
現在時刻を表示させたい!
-
<input>の選択肢をプルダウンメ...
-
Selectボックスの幅を自動で広...
-
javaScriptの変数をJavaの変数...
-
JavaScriptのfileオブジェクト...
-
<JavaScript>tableタグを入力不...
-
ASP.NETでNAME属性を固定にしたい
-
RegularExpressionValidatorの...
-
クリックされた罫表セルの行番...
-
同じ名前のセレクトがある場合...
-
onchangeイベントを強制的に発...
-
二次元配列に数字をランダムに...
-
sessionの値でボタンを活性・非...
-
JQueryで2つのテキストフィー...
-
cookie使用時にundefinedと表示...
-
doPostBack 関数について
-
【FORM】 リンク文字で submit...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TextBoxに半角数字以外を入れた...
-
【Javascript】(テキストボッ...
-
tabindexの取得
-
jQueryのdatepickerの日付が選...
-
IF文でタグの値を確認する
-
マイナスなら赤字で表示したい...
-
javascriptのちょっとした動作...
-
現在時刻を表示させたい!
-
Javascript キー入力より、フォ...
-
JavaScriptで作ったアプリが正...
-
ページ間で変数を保持したい
-
mouseover 時の連続処理につき...
-
表示したいだけなんですけど…
-
ラジオボタンによる表示、非表...
-
テキストエリアに履歴を残したい
-
クリック→フォーカスのある場所...
-
HTMLファイル同士での値渡し
-
どちらかひとつのテキストボッ...
-
開いたサブウインドウから値を...
-
AjaxZip3.zip2addr IE8でエラー
おすすめ情報