日期:2014-05-16  浏览次数:20360 次

使用js计算工时的问题(高手帮忙)

从外部传入两个参数:开始时间、结束时间 (格式: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 表示半小时)

------解决方案--------------------
OK!
JScript code
<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>