获取某天到某天相隔的时间段的工作日期(包含周末上班时间)和非工作日(包括调休、国家法定节假日)
程序员文章站
2022-05-20 10:09:37
...
在这 ## **获取某天到某天相隔的时间段的工作日期(包含周末上班时间)和非工作日(包括调休、国家法定节假日)**
Date.prototype.format = function() {
var s = '';
var mouth = (this.getMonth() + 1)>=10?(this.getMonth() + 1):('0'+(this.getMonth() + 1));
var day = this.getDate()>=10?this.getDate():('0'+this.getDate());
s += this.getFullYear() + '-'; // 获取年份。
s += mouth + "-"; // 获取月份。
s += day; // 获取日。
return (s); // 返回日期。
};
function isWeekEnd(date){
if( "天一二三四五六".charAt(new Date(date).getDay())=="天" ) return true;
if( "天一二三四五六".charAt(new Date(date).getDay())=="六" ) return true;
}
function getAll(begin, end) {
var arr = [];
var ab = begin.split("-");
var ae = end.split("-");
var db = new Date();
db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);
var de = new Date();
de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);
var unixDb = db.getTime() - 24 * 60 * 60 * 1000;
var unixDe = de.getTime() - 24 * 60 * 60 * 1000;
for (var k = unixDb; k <= unixDe;) {
//console.log((new Date(parseInt(k))).format());
k = k + 24 * 60 * 60 * 1000;
arr.push((new Date(parseInt(k))).format());
}
return arr;
}
function getWeekOrNo (startDate,endDate,flag){
var _allTimer = getAll(startDate,endDate);//获取一段时间内的所有日期
//国家法定节假日数组 需要每年更新
var Holiday = ["2020-04-04", "2020-04-05", "2020-04-06", "2020-05-01", "2020-05-02", "2020-05-03", "2020-05-04", "2020-05-05", "2020-06-25", "2020-06-26", "2020-06-27","2020-10-01", "2020-10-02", "2020-10-03", "2020-10-04", "2020-10-05", "2020-10-06", "2020-10-07"];
//周末需要上班的时间
var WeekendsOff = ["2020-04-26", "2020-05-09", "2020-06-28", "2020-10-10"];
var gongzuori = [];
var noGongzuori = [];
for (var i= 0; i<_allTimer.length; i++) {
if (Holiday.indexOf(_allTimer[i]) < 0) { // 当前日期是否是调休日
// 判断当前是否是周末
if (isWeekEnd(_allTimer[i])) {
if (WeekendsOff.indexOf(_allTimer[i]) > 0) {
gongzuori.push(_allTimer[i]);
}else{
noGongzuori.push(_allTimer[i]);
}
} else {
gongzuori.push(_allTimer[i]);
}
}else{
noGongzuori.push(_allTimer[i]);
}
}
if(flag){//flag为ture返回工作日
return gongzuori;
}else{
return noGongzuori;
}
console.log(gongzuori);
console.log(noGongzuori);
}
里插入代码片