原理:
由于调休日不稳定(国家规定), 不能直接自动判断某天是否为工作日。 需要手动记录大的节假日和调休日。
1.手动找出(1)节假日 (2)调休日
2.首先判断是否为调休日, 调休日一定是工作日。
3.然后判断是否为节假日, 节假日一定休息。
4.判断是否为周六周天, 排除调休日的周六周天一定放假。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
/**
* 周六周天 自己计算
* 大放假或者调休
* 2月4日至10
* 4月5日至7 4月29日至5月1日
* @type {Array}
*
* 主要是调休不好弄, 不确定调休的时间
*/
bigWeekDay = ['20180101', '20180215', '20180216', '20180217', '20180218', '20180219', '20180220', '20180221',
'20180405', '20180406', '20180407', '20180429', '20180430', '20180501', '20180618', '20180924',
'20181001', '20181002', '20181003', '20181004', '20181005', '20181006', '20181007', '20181231',
'20190101', '20190204', '20190205', '20190206', '20190207', '20190208', '20190209', '20190210',
'20190405', '20190406', '20190407', '20190429', '20190430', '20190501', '20190617', '20190913',
'20191001', '20191002', '20191003', '20191004', '20191005', '20191006', '20191007',
];
/**
* 2月11日(星期日)、2月24 4月8日(星期日)上班 4月28日(星期六)上 9月29日(星期六)、9月30
* @type {[string]}
*/
tiaoxiu = ['20180211', '20180224', '20180408', '20180428', '20180929', '20180930', '20181229',
'20190202', '20190203', '20190427', '20190428',
];
/**
*
* @param timeStamp 输入一个时间对象, 判断该天是否为工作日
* @returns {boolean} false 休息 true 工作
*/
function judgeNextWeekCanGet(timeStamp='') {
console.log(timeStamp);
if ( timeStamp == 'undefine' || timeStamp == '') {
timeStamp = new Date();
}
var isWeek = timeStamp.getDay(); //0 周日 6周六
var y = timeStamp.getFullYear();
var m = timeStamp.getMonth()+1;
m = m < 10 ? '0' + m : '' + m;
var d = timeStamp.getDate() <10 ? '0'+timeStamp.getDate():''+timeStamp.getDate();
var ymd = y+m+d;
//判断是否为调休日 必定是工作日
if (tiaoxiu.indexOf(ymd) > -1) {
return true;
}
//判断是否为假期 必定休息
if (bigWeekDay.indexOf(ymd) > -1) {
return false;
}
//判断是否为周六周天
if (isWeek == 0 || isWeek == 6) {
return false
}
return true;
}
console.log(judgeNextWeekCanGet(new Date('2018-01-01')));
</script>
</body>
</html>