检查日期是否在数组JS中重叠

时间:2019-07-04 14:23:32

标签: javascript jquery arrays date

我有一个数组,其中包含一组开始/结束日期对象(包括时间)

    results["records"] =
[0] -[startDate,endDate]
[1] -[startDate, endDate]

我还有另外两个日期对象作为JS变量本地存储。 如何检查这些变量(即startDateObj和&endDateObj OVERLAP)是否与数组中的ANY记录重叠,也就是说,我的意思是与任何开始日期或结束日期之间的任何时间进行交叉。

提前谢谢

下面的初始尝试

    $(results['records']).each(function() {
console.log('end:' + this[1])
console.log('start:' + this[0])
 if(startDateObj < this[1].end && endDateObj > this[0].start) {
alert('this overlaps')
  }
  });

编辑:下面添加了答案 祝你有美好的一天!

2 个答案:

答案 0 :(得分:0)

我在“ dateArray”中采用此结构,因为要检查重叠部分,您需要定义日期和时间范围。

dateArray: [{start: Date, end: Date}];
dateArray.forEach(date => {
  if(startDateObj < date.end && endDateObj > date.start) {
    //this is an overlap
  }
});

答案 1 :(得分:0)

答案是数组中的完整日期对象,该对象被视为字符串 以便进行转换和修复

function toDateString(date)
{
            var formatedDate = new Date(date);
            return formatedDate;
}

$(results['records']).each(function() {
 if(startDateObj < toDateString(this[1]) && endDateObj > toDateString(this[0])) 
{
//overlaps
}