vue根据日期段获取重叠部分
// 获取日期数组中最大的日期
getDateMax(dataArr) {
let max = dataArr[0];
for (let i = 1; i < dataArr.length; i++) {
if (Date.parse(dataArr[i]) > Date.parse(max)) {
max = dataArr[i]
}
}
return max
},
// 获取日期数组中最小的日期
getDateMin(dataArr) {
let min = dataArr[0];
for (let i = 1; i < dataArr.length; i++) {
if (Date.parse(dataArr[i]) < Date.parse(min)) {
min = dataArr[i]
}
}
return min
},
getAll(begin, end) {
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();
var unixDe = de.getTime();
for (var k = unixDb; k <= unixDe;) {
k = k + 24 * 60 * 60 * 1000;
},
// 获取重叠日期函数
isDadeOverlap(startDateArr,endDateArr,valueDate){
let me = this;
let minD = me.getDateMin(startDateArr)
let maxD = me.getDateMax(endDateArr)
let dateRange = me.getAll(minD,maxD);
let sI = null
let sE = null
if(dateRange.indexOf(valueDate[0])!=-1){
sI = dateRange.indexOf(valueDate[0])
}
if(dateRange.indexOf(valueDate[1])!=-1){
sE = dateRange.indexOf(valueDate[1])
}
if( sI!==null && sE!==null ){
return me.getAll(dateRange[sI],dateRange[sE]).join(',')
}
if( sI!==null && sE === null ){
return me.getAll(dateRange[sI],dateRange[dateRange.length-1]).join(',')
}
if( sI === null && sE!==null ){
return me.getAll(dateRange[0],dateRange[sE]).join(',')
}
if(Date.parse(valueDate[0]) < Date.parse(minD) && Date.parse(valueDate[1]) > Date.parse(maxD)){
return dateRange.join(',')
}
return null
}
调用
let sd = ["2022-02-23","2022-02-24"]
let se = ["2022-03-31","2022-04-02"]
// 参数1:开始日期数组 参数2:结束日期数组 参数3:所选的值开始结束范围
let d = me.isDadeOverlap(sd,se,['2022-02-02','2022-04-04'])
console.log(d)

浙公网安备 33010602011771号