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;
}