入力した瞬間(JavaScriptのonChangeを使用)に
その2つの時間の差を求めて
3つめのフォームに値を出力したいのですが、
それをページの更新なしで、JavaScriptでやりたいと
思っています。
よろしくお願いします。
時分だけならDateを使う必要はありません。
入力されたそれぞれの値について時と分に分離し、時*60+分を計算して差分を取ります。
その結果を60で割った商が時、余が分になります。
サンプルは入力値のチェックをしていません。
例えば 0:22321 と 0:0 を与えると、372時間 1分 と計算します。
<html> <head> <script language="Javascript"> function calc(){ k1= FF.D1.value+":"; k2= FF.D2.value+":"; s1=k1.split(":"); s2=k2.split(":"); v1= 60*parseInt(s1[0])+parseInt(s1[1]); v2= 60*parseInt(s2[0])+parseInt(s2[1]); sabun=Math.abs( v1-v2 ) xhh=Math.floor( sabun/60 ); xmm=sabun%60 ; FF.RS.value= ""+xhh+"時間 "+xmm+"分" } </script> </head> <BODY> <form name="FF"> <input type=text name="D1" onChange="calc();"> <input type=text name="D2" onChange="calc();"> <BR> 差<input type=text name="RS"> </form> </BODY></HTML>
こんな感じかと。HTML自体はかなり適当。
1970/01/01 00:00からの経過ミリ秒は、Date.parseで
文字列"2006/05/12 18:00"形式から直接持ってきています。
あとは差分の絶対値(わかりやすいように秒単位で)を作り、
日数,時,分を求めます。
各所の計算を整数で行う必要があります。
時間のHH:MMフォーマットはちょっと強引かも。
<html> <head> <script language="Javascript"> function calc(){ sabun=Math.floor(Math.abs(Date.parse(FF.D1.value)-Date.parse(FF.D2.value))/1000); p=60*60*24 xdate=Math.floor( sabun/p); sabun -= xdate*p p/=24; xhh=Math.floor( sabun/p ); sabun -= xhh*p p/=60; xmm=Math.floor( sabun/p ); xtime= 10000+xhh*100 + xmm; stime= ""+xtime FF.RS.value= ""+xdate+"日"+stime.substr(1,2)+":"+stime.substr(3,2) } </script> </head> <BODY> <form name="FF"> <input type=text name="D1" onChange="calc();"> <input type=text name="D2" onChange="calc();"> <BR> 差<input type=text name="RS"> </form> </BODY></HTML>
ありがとうございます。
日数は要らないということをいい忘れてました。
00:00 - 00:00
の形式でお願いします。
時分だけならDateを使う必要はありません。
入力されたそれぞれの値について時と分に分離し、時*60+分を計算して差分を取ります。
その結果を60で割った商が時、余が分になります。
サンプルは入力値のチェックをしていません。
例えば 0:22321 と 0:0 を与えると、372時間 1分 と計算します。
<html> <head> <script language="Javascript"> function calc(){ k1= FF.D1.value+":"; k2= FF.D2.value+":"; s1=k1.split(":"); s2=k2.split(":"); v1= 60*parseInt(s1[0])+parseInt(s1[1]); v2= 60*parseInt(s2[0])+parseInt(s2[1]); sabun=Math.abs( v1-v2 ) xhh=Math.floor( sabun/60 ); xmm=sabun%60 ; FF.RS.value= ""+xhh+"時間 "+xmm+"分" } </script> </head> <BODY> <form name="FF"> <input type=text name="D1" onChange="calc();"> <input type=text name="D2" onChange="calc();"> <BR> 差<input type=text name="RS"> </form> </BODY></HTML>
どうもありがとうございました。
忙しかったので助かりました。
どうもありがとうございました。
忙しかったので助かりました。