<script language="javascript">
function DateDiff(date1, date2)
{
//小时差别
date1=date1.substring(5,9).replace(/\-/g,'/')+'/'+date1.substring(0,4)+' '+date1.substring(11);
date2=date2.substring(5,9).replace(/\-/g,'/')+'/'+date2.substring(0,4)+' '+date2.substring(11);var objDate1=new Date(date1);
var objDate2=new Date(date2);
return (objDate1.getTime()-objDate2.getTime())/1000/3600;
}</script>
<input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff('2005-09-22 18:00', value)">
<input type="text" name="showdiff">

解决方案 »

  1.   


    时间格式为:'2005-09-22 18:00'<script language=Javascript>
    function DateDiff(firstd,secondd)
    {
    var ostr=firstd.split("-");
    var sstr=ostr[2].split(" ");
    firstd=ostr[1]+"/"+sstr[0]+"/"+ostr[0]+" "+sstr[1]
    var a = new Date(firstd)var ostr=secondd.split("-");
    var sstr=ostr[2].split(" ");
    secondd=ostr[1]+"/"+sstr[0]+"/"+ostr[0]+" "+sstr[1]
    var b = new Date(secondd)a = b.valueOf()-a.valueOf()
    a = new Date(a)
    return a.getFullYear() + "-" + (a.getMonth() + 1) + "-" + a.getDate() + " " + a.getHours() + ":" + a.getMinutes()
    }
    </script><input type="text" name="firstinput">
    <input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff(document.all.firstinput.value, value)">
    <input type="text" name="showdiff">
      

  2.   


    时间格式为:'09/22/2005 18:00'
    <script language=Javascript>
    function DateDiff(firstd,secondd)
    {
    var a = new Date(firstd)
    var b = new Date(secondd)a = b.valueOf()-a.valueOf()
    a = new Date(a)
    return (a.getMonth() + 1) + "/" + a.getDate() + "/" + a.getFullYear() + " " + a.getHours() + ":" + a.getMinutes()
    }
    </script><input type="text" name="firstinput">
    <input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff(document.all.firstinput.value, value)">
    <input type="text" name="showdiff">
      

  3.   


    <script language=Javascript>
    function DateDiff(firstd,secondd)
    {
    var a = new Date(firstd)
    var b = new Date(secondd)//a = (b-a)/60000
    a = (b-a)/3600000//返回小时数
    return a
    }
    </script><input type="text" name="firstinput" value="09/22/2005 18:00">
    <input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff(document.all.firstinput.value, value)" value="09/23/2005 18:00">
    <input type="text" name="showdiff">
      

  4.   

    非常感谢:qiqunet(瑞旗·广东),但为什么我输入时间相减后显示的是:NaN NaN NaN :NaN NaN
      

  5.   


    由于时间格式都是没有做过验证的,所以当输入的格式不符合时,返回的数据就会错误。<script language=Javascript>
    function DateDiff(firstd,secondd)
    {
    var fstr=firstd.split("-");
    firstd=fstr[1]+"/"+fstr[2]+"/"+fstr[0]
    var a = new Date(firstd)var sstr=secondd.split("-");
    secondd=sstr[1]+"/"+sstr[2]+"/"+sstr[0]
    var b = new Date(secondd)a = (b-a)/24/3600000;
    if(a>0) return "后了:"+ a + "天";
    if(a<0) return "前了:"+ a + "天";
    if(a==0) return "两时间相等";}
    </script><input type="text" name="firstinput" value="2005-09-22">
    <input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff(document.all.firstinput.value,value)" value="2005-09-22">
    <input type="text" name="showdiff">
      

  6.   

    源码
    <html>
    <head>
    <title>时间</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"><script src="../../js/date.js"></script>
    </head>
    <body>
    <br>  <table width="97%" border="0" align="center" cellpadding="2" cellspacing="0" class=wikitable>
        <tr> 
          <td class="End">开始</td>
          <td class="End">结束</td>
          <td width="60" class="End">时长</td>
        </tr>
        <tr> 
          <td> <input name="startDate" type="text" onFocus="calendar()"> 
          </td>
          <td><input name="endDate" type="text" onFocus="calendar()"></td>
          <td><input name="timeLong" type="text"></td>
        </tr>
        <tr> 
          <td><input name="startDate" type="text" onFocus="calendar()"></td>
          <td><input name="endDate" type="text" onFocus="calendar()"></td>
          <td><input name="timeLong" type="text"></td>
        </tr>
        <tr> 
          <td><input name="startDate" type="text" onFocus="calendar()"></td>
          <td ><input name="endDate" type="text" onFocus="calendar()" ></td>
          <td><input name="timeLong" type="text"></td>
        </tr>
        <tr> 
          <td><input name="startDate" type="text" onFocus="calendar()"></td>
          <td><input name="endDate" type="text" onFocus="calendar()"></td>
          <td><input name="timeLong" type="text" ></td>
        </tr>
        <tr> 
          <td> <input name="startDate" type="text" onFocus="calendar()"> 
          </td>
          <td><input name="endDate" type="text" onFocus="calendar()"></td>
          <td><input name="timeLong" type="text" ></td>
        </tr>
        <tr> 
          <td><input name="startDate" type="text" onFocus="calendar()"></td>
          <td><input name="endDate" type="text" onFocus="calendar()"></td>
          <td><input name="timeLong" type="text"></td>
        </tr>
      </table></body>
    </html>
      

  7.   


    因为onFocus="calendar()"造成了input框中所有的事件失效,所以暂时只想到修改date.js的方法来解决。只对文档尾部作了修改:在尾部添加了DateDiff()函数,在原有date.js中插入了一条响应DateDiff()函数的语句。楼上的源代码不用更改。
    date.js文件中被修改部份的代码见下:
    ……………………………………function returnDate() //根据日期格式等返回用户选定的日期
    {
        if(WebCalendar.objExport)
        {
            var returnValue;
            var a = (arguments.length==0) ? WebCalendar.day[this.id.substr(8)].split("/") : arguments[0].split("/");
            var d = WebCalendar.format.match(/^(\w{4})(-|\/|.|)(\w{1,2})\2(\w{1,2})$/);
            if(d==null){alert("你设定的日期输出格式不对!\r\n\r\n请重新定义 WebCalendar.format !"); return false;}
            var flag = d[3].length==2 || d[4].length==2; //判断返回的日期格式是否要补零
            returnValue = flag ? a[2] +d[2]+ appendZero(a[1]) +d[2]+ appendZero(a[0]) : a[2] +d[2]+ a[1] +d[2]+ a[0];
            if(WebCalendar.timeShow)
            {
                var h = new Date().getHours(), m = new Date().getMinutes(), s = new Date().getSeconds();
                returnValue += flag ? " "+ appendZero(h) +":"+ appendZero(m) +":"+ appendZero(s) : " "+  h  +":"+ m +":"+ s;
            }
            WebCalendar.objExport.value = returnValue;
            hiddenCalendar();//这里插入了响应计算时差函数的语句。        DateDiff(WebCalendar.objExport);
        }
    }
    function document.onclick()
    {
        if(WebCalendar.eventSrc != window.event.srcElement) hiddenCalendar();
    }
    //在这里添加了计算时差的函数
    function DateDiff(selobj){
        var linenum=selobj.parentElement.parentElement.rowIndex-1;
        var secondd=document.getElementsByName("endDate")[linenum].value;
        var firstd=document.getElementsByName("startDate")[linenum].value;
        var returnval="";    var fstr=firstd.split("-");
        firstd=fstr[1]+"/"+fstr[2]+"/"+fstr[0]
        var a = new Date(firstd)    var sstr=secondd.split("-");
        secondd=sstr[1]+"/"+sstr[2]+"/"+sstr[0]
        var b = new Date(secondd)    a = (b-a)/24/3600000;
        if(a>0) returnval="后了:"+ a + "天";
        if(a<0) returnval="前了:"+ -a + "天";
        if(a==0) returnval="两时间相等";
        document.getElementsByName("timeLong")[linenum].value=returnval;
    }//-->