原理:
由于调休日不稳定(国家规定), 不能直接自动判断某天是否为工作日。 需要手动记录大的节假日和调休日。
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>