js计算工时,排除周末

很久不做web,现在又回头去了,开始就OA,苦逼
今天有个要算工时的,去搜了下,有同样需求的还真不少,js大牛也不少,让很久不写前端的我也膜拜下,实际上是找个了大牛些的改了改,就完成了。
不多说明,只为有个备份的记忆
<script>
DateDiffNoWeekDay(new Date("2013/05/02 14:30:00"),new Date("2013/05/07 12:30:00"));
function carryTime(date){
	if(date.getMinutes()>0&&date.getMinutes()<15){
		date.setMinutes(0);
	}
	if(date.getMinutes()>=15&&date.getMinutes()<30){
		date.setMinutes(30);
	}
	if(date.getMinutes()>30&&date.getMinutes()<45){
		date.setMinutes(30);
	}
	if(date.getMinutes()>=45){
		date.setHours(date.getHours()+1);
		date.setMinutes(0);
	}
	return date;
}
function DateDiffNoWeekDay(startTime,endTime){
    if(startTime>=endTime) return 0;
    startTime=carryTime(startTime);
    endTime=carryTime(endTime);
    var totalTime=0;
    if(startTime.getDay()==6||startTime.getDay()==0){
    	totalTime=endTime.getDate()-startTime.getDate();
    }else{
    	totalTime=Math.floor(((endTime-startTime)/(3600*1000))/24);
    }
    var tempStartTime=new Date();
    tempStartTime.setTime(startTime.getTime());
    var temp=0;
    while(tempStartTime.getDate()<endTime.getDate()){
    	if(tempStartTime.getDay()==6||tempStartTime.getDay()==0){
    		totalTime--;
   		}
    	tempStartTime.setDate(tempStartTime.getDate()+1);
   }
   do{
    	if(startTime.getDay()==6 || startTime.getDay()==0){
    	 	startTime.setDate(startTime.getDate()+1);
    	 	startTime.setHours(9);
    	 	startTime.setMinutes(0);
    	 	continue;
    	}
        if(startTime.getHours()*60+startTime.getMinutes()>=9*60 && startTime.getHours()*60+startTime.getMinutes()<17*60){
            temp+=0.05;
        }
        startTime.setTime(startTime.getTime()+0.5*3600*1000);
    }while(startTime.getHours()*60+startTime.getMinutes()!=endTime.getHours()*60+endTime.getMinutes())
    totalTime+=Math.floor(temp/0.8);
    totalTime+=temp%0.8;
    totalTime=Math.round(totalTime*100)/100
    var days=Math.floor(totalTime);
    var hours=Math.round((totalTime-days)*100)/10;
    document.write(" <u>  "+days+"  </u>day<u>   "+hours+"  </u>hour");
    return totalTime;
}
</script>

你可能感兴趣的:(JavaScript,Web)