欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

获取某天到某天相隔的时间段的工作日期(包含周末上班时间)和非工作日(包括调休、国家法定节假日)

程序员文章站 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);
}






里插入代码片