第一个框为str_start 第二个为str_end;
我是这样写的:  
         var start = new Date(str_start.substring(0,4),str_start.substring(5,7)-1,str_start.substring(8,10),
         str_start.substring(11,13),str_start.substring(14,16));         var end=new Date(str_end.substring(0,4),str_end.substring(5,7)-1,
         str_end.substring(8,10),str_start.substring(11,13),str_start.substring(14,16));         var totalHours=(end-start)/(86400000);
可这除出来的结果好像是天,不是小时,大家帮我想想怎么样才可得到 小时

解决方案 »

  1.   

    汗!你把时间转换为按小时计算啊给你一个日期计算函数://+---------------------------------------------------   
    //| 日期计算   
    //+---------------------------------------------------   
    Date.prototype.DateAdd = function(strInterval, Number) {    
        var dtTmp = this;   
        switch (strInterval) {    
            case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));   
            case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));   
            case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));   
            case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));   
            case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));   
            case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
            case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
            case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
        }   
    }   
      

  2.   


    var str_start = "2009-04-03 11:14:13";
    var str_end = "2009-04-03 16:44:13";
    var start = new Date(str_start.substring(0,4),str_start.substring(5,7)-1,str_start.substring(8,10), 
    str_start.substring(11,13),str_start.substring(14,16));  var end=new Date(str_end.substring(0,4),str_end.substring(5,7)-1, 
    str_end.substring(8,10),str_end.substring(11,13),str_end.substring(14,16)); 

    var h = (end.getTime() - start.getTime()) / (1000 * 60 * 60);
    alert(h);
      

  3.   

    //+---------------------------------------------------   
    //| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串   
    //+---------------------------------------------------   
    Date.prototype.DateDiff = function(strInterval, dtEnd) {    
        var dtStart = this;   
        if (typeof dtEnd == 'string' )//如果是字符串转换为日期型   
        {    
            dtEnd = StringToDate(dtEnd);   
        }   
        switch (strInterval) {    
            case 's' :return parseInt((dtEnd - dtStart) / 1000);   
            case 'n' :return parseInt((dtEnd - dtStart) / 60000);   
            case 'h' :return parseInt((dtEnd - dtStart) / 3600000);   
            case 'd' :return parseInt((dtEnd - dtStart) / 86400000);   
            case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));   
            case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);   
            case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();   
        }   
    }   
    这个是时间差函数
      

  4.   

    怎么发不出来...
    <script>
    var str_start = "2009-04-03 11:14:13";
    var str_end = "2009-04-03 16:44:13";
    var start = new Date(str_start.substring(0,4),str_start.substring(5,7)-1,str_start.substring(8,10), 
    str_start.substring(11,13),str_start.substring(14,16));  var end=new Date(str_end.substring(0,4),str_end.substring(5,7)-1, 
    str_end.substring(8,10),str_end.substring(11,13),str_end.substring(14,16)); 

    var h = (end.getTime() - start.getTime()) / (1000 * 60 * 60);
    alert(h);
    </script>
      

  5.   

    当参数strInterval为h时就是按时间计算时间差了
      

  6.   


    直接减不准确,处理不了跨月和大小月,可以考虑分成两部分,1 取前八位日期,转换成date类型,比较日期间隔2 取后六位时间,比较24小时的时间间隔将1和2的结果综合起来就可以了。如果需要结果是小时格式的再转换一下,注意单位。
      

  7.   

    用我的那个方法最后简化成你要的部分就是
    var str_start =new Date(Date.parse("2009-04-03 11:14:13".replace(/-/g,"/"))) ;
    var str_end = new Date(Date.parse("2009-04-03 16:44:13".replace(/-/g,"/")));
    var h = (str_end - str_start) / (1000 * 60 * 60);
    document.write(h)非要自己高那么复杂