- ベストアンサー
指定時間からの経過時間をリアルタイムに計算する
いろいろ調べて、プログラムしてみたのですがどうしてもうまくいかずに悩んでいます。 ブラウザ上から指定の時間を入力し、現在の時間までの経過時間をリアルタイムで表示することできますか? 数値を取得し、リアルタイムで変更するということが出来ずに困っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じ、基準の時間を変更したら、フォーカスを移動(テキストボックス以外の部分をクリック)すると再計算します。 ------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS"> <title>経過時間</title> <script type="text/javascript"> <!-- var originDate; //指定日 var day=24*60*60;//1日の秒 var hour=60*60; //1時間の秒 setInterval('displayDate()',1000);//一秒毎に実行する function setOriginDate(){ var inpStrings = FORM.inpTime.value.split(" "); var DateStr = inpStrings[0].split("/"); var TimeStr = inpStrings[1].split(":"); originDate = new Date( parseInt(DateStr[0]), //年 parseInt(DateStr[1]-1),//月、月は-1することに注意 parseInt(DateStr[2]), //日 parseInt(TimeStr[0]), //時 parseInt(TimeStr[1]), //分 parseInt(TimeStr[2])); //秒 } function displayDate(){ var nowDate = new Date(); var diff, d,h,m,s; diff = nowDate.getTime() - originDate.getTime(); diff =Math.round(diff / 1000);//ミリ秒から秒に直す d = Math.floor(diff / day); diff = diff - d * day; h = Math.floor(diff / hour); diff = diff - h * hour; m = Math.floor(diff / 60); s = diff - m * 60; FORM.outTime.value=d+"日"+h+"時間"+m+"分"+s+"秒経過"; } // --> </script> </head> <body onload="setOriginDate()"> <form name="FORM"><br> 基準時間<input name="inpTime" type="text" value="2004/4/1 8:16:40" size="27" onchange="setOriginDate()"><br> <input name="outTime" type="text" value="" size="40" READONLY> </form> </body> </html>
その他の回答 (1)
- sakuhat
- ベストアンサー率61% (11/18)
setTimeoutを使うと出来ると思います。 setTimeout("setKeika()",0); function setKeika() { /* 経過時間を計算して出力 */ //1000ms後にsetKeika()を呼び出す setTimeout("setKeika()",1000); }