计算两个时间内工作时长,一天按8小时,排除周末。

var MathCha = function (time, format) {
var t = new Date(time);
var tf = function (i) { return (i < 10 ? '0' : '') + i };
return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function (a) {
switch (a) {
case 'yyyy':
return tf(t.getFullYear());
break;
case 'MM':
return tf(t.getMonth() + 1);
break;
case 'mm':
return tf(t.getMinutes());
break;
case 'dd':
return tf(t.getDate());
break;
}
})
}


function DateDiff(start, end) {
var rfq = new Date(start); //开始时间
var eva = new Date(end); //结束时间
var TraveIHours = 0; //计算总时长


//同一天进行计算时间差
if (eva.getDate() == rfq.getDate() && eva.getMonth() + 1 == rfq.getMonth() + 1) {

if (rfq.getDay == 0 || rfq.getDay == 6) { TraveIHours = 0; } else {
if (rfq.getHours() <= 8 && eva.getHours() >= 17) { TraveIHours = 8; } else {
if (rfq.getHours() <= 8 && eva.getHours() <= 17) { TraveIHours = Math.floor(eva.getHours() - 8); } else {
if (rfq.getHours() >= 8 && eva.getHours() >= 17) { TraveIHours = Math.floor(17 - rfq.getHours()); } else {
if (rfq.getHours() >= 8 && eva.getHours() <= 17) { TraveIHours = Math.floor(eva.getHours() - rfq.getHours()); }
}
}
}
//如果是上下午,则减去1小时;
if (rfq.getHours() <= 12 && eva.getHours() >= 13) { TraveIHours = Math.floor(TraveIHours - 1); }

}
}
//不同时间内计算时间差
else {
//计算eva时间,判断当天是周末则不计算时间。
if (eva.getDay() == 0 || eva.getDay() == 6) { TraveIHours = 0; } else {
if (eva.getHours() <= 8) { TraveIHours = 0; } else {
if (eva.getHours() >= 8 && eva.getHours() <= 12) { TraveIHours = Math.floor(eva.getHours() - 8); } else {
if (eva.getHours() > 12 && eva.getHours() <= 17) { TraveIHours = eva.getHours() - 9; } else {
if (eva.getHours() >= 17) { TraveIHours = 8; }
}
}
}
}

//计算rfq时间,判断当天是周末则不计算时间。
if (rfq.getDay() == 0 || rfq.getDay() == 6) { TraveIHours += 0; } else {
if (rfq.getHours() <= 8) { TraveIHours += 8; } else {
if (rfq.getHours() >= 8 && rfq.getHours() <= 12) { TraveIHours += Math.floor(12 - rfq.getHours() + 4); } else {
if (rfq.getHours() > 12 && rfq.getHours() <= 17) { TraveIHours += Math.floor(17 - rfq.getHours()); } else {
if (rfq.getHours() >= 17) { TraveIHours += 0; }
}
}
}
}

var e = Date.parse(new Date(MathCha(eva, 'yyyy-MM-dd')));
var s = Date.parse(new Date(MathCha(rfq, 'yyyy-MM-dd')));
var workDayVal = (e - s) / 86400000;
var remainder = workDayVal % 7;
var divisor = Math.floor(workDayVal / 7);
var weekendDay = 2 * divisor;
var nextDay = rfq.getDay();
for (var tempDay = remainder; tempDay >= 1; tempDay--) {
if (tempDay == remainder) {
nextDay = nextDay + 0;
} else if (tempDay != remainder) {
nextDay = nextDay + 1;
}
if (nextDay == 7) {
nextDay = 0;
}
if (nextDay == 0 || nextDay == 6) {
weekendDay = weekendDay + 1;
}
}

//如开始日期为周末则不减,为周末则减。
if (rfq.getDay() == 0 || rfq.getDay() == 6) {
workDayVal = Math.floor(workDayVal - weekendDay)
} else {
workDayVal = Math.floor(workDayVal - weekendDay) - 1;
}


if (workDayVal <= 0) { workDayVal = 0; };
TraveIHours += workDayVal * 8;
}
//如果rfq>evq,时间清零;
if (rfq > eva) { TraveIHours = 0; }

return TraveIHours;
}

转载于:https://www.cnblogs.com/illegal/p/6374179.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值