从外部传入两个参数:开始时间、结束时间 (格式:2010-1-1 9:30)输入的时间只有两种形式,整的时间和半点的时间(9:00 或者 9:30) 工作时间按9:30-12:00,13:00-18:30计(12:00-13:00午休不计入工时)。双休日也要踢除。超出以上时间范围的均不计入工时;下面括号里的看不清楚就不用做:
(显示开始时间与结束时间计算出的数值,公示基础以A.BC(A为天、B为小时C为半小时用5代表,8小时升位);例如:
1.45  表示1天零4个半小时,即开发共用12.5小时;0.05 表示半小时)

解决方案 »

  1.   

    楼主我只能给你当前时间var  a = new Date();单位是毫秒,你可以计算一下通过时间差,来计算有多长时间也就是工时,但是别的就不知道了
    比如
    var  a = new Date('2001/10/03');
    var  b = new Date('2001/11/05');
    alert((a-b)/1000/60/60 + "小时")
    计算一段时间的
      

  2.   

    还有问题,明天再弄<script>
    function getHour(d1,d2){
    if(d1>=d2)return 0;
    var rtn=Math.floor(((d2-d1)/(3600*1000))/24);
    var temp=((d2-d1)/(3600*1000))%24;

    rtn=Math.floor(((d2-d1)/(3600*1000))/24);
    //d1.setTime(d1.getTime()+temp*3600*1000);
    while(d1.getHours()*60+d1.getMinutes()!=d2.getHours()*60+d2.getMinutes()){
    d1.setTime(d1.getTime()+0.5*3600*1000);
    if(d1.getHours()*60+d1.getMinutes()>9*60+30 &&
       d1.getHours()*60+d1.getMinutes()<=12*60){
    rtn+=0.05;
    }
    if(d1.getHours()*60+d1.getMinutes()>=13*60 &&
       d1.getHours()*60+d1.getMinutes()<18*60+30){
    rtn+=0.05;
    }
    }

    alert(rtn);
    }getHour(new Date("2010/1/1 9:30"),new Date("2010/1/2 18:30"));
    getHour(new Date("2010/1/1 8:30"),new Date("2010/1/2 18:30"));
    </script>
      

  3.   

    OK!
    <script>
    function getHour(d1,d2){
        if(d1>=d2)return 0;
        var rtn=Math.floor(((d2-d1)/(3600*1000))/24);
        var temp=0;
        
        rtn=Math.floor(((d2-d1)/(3600*1000))/24);
        while(d1.getHours()*60+d1.getMinutes()!=d2.getHours()*60+d2.getMinutes()){
            if(d1.getHours()*60+d1.getMinutes()>=9*60+30 &&
               d1.getHours()*60+d1.getMinutes()<12*60){
                temp+=0.05;
            }
            if(d1.getHours()*60+d1.getMinutes()>=13*60 &&
               d1.getHours()*60+d1.getMinutes()<18*60+30){
                temp+=0.05;
            }
            d1.setTime(d1.getTime()+0.5*3600*1000);
        }
        rtn+=Math.floor(temp/0.8);
        rtn+=temp%0.8;
        rtn=Math.floor(rtn*100)/100
        alert(rtn);
    }getHour(new Date("2010/1/1 12:30"),new Date("2010/1/2 11:30"));
    getHour(new Date("2010/1/1 10:30"),new Date("2010/1/2 19:30"));
    getHour(new Date("2010/1/1 8:30"),new Date("2010/1/2 17:30"));
    </script>
      

  4.   

    shan1119 的计算方法很正确,但是没有去除掉周六日。不过还是很佩服你呵呵