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>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值