很久不做web,现在又回头去了,开始就OA,苦逼
今天有个要算工时的,去搜了下,有同样需求的还真不少,js大牛也不少,让很久不写前端的我也膜拜下,实际上是找个了大牛些的改了改,就完成了。
不多说明,只为有个备份的记忆
今天有个要算工时的,去搜了下,有同样需求的还真不少,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>