datepicker dateranges 覆盖布局

datepicker dateranges overrides layout

我试图在 jquery 日期选择器中突出显示多个日期范围。到目前为止,它只适用于一个范围。但是当我尝试显示多个日期范围时,for 循环会覆盖之前的布局。

使用以下代码:

$("#datepicker").datepicker({

    firstDay: 1,
    beforeShowDay: function(date) {

        for(var i = 0; i < testJson.length; i++) {
            startDate = new Date(testJson[i].startDate);
            endDate = new Date(testJson[i].endDate);

            if(date.getTime() === endDate.getTime()) {
                return [true, 'start-of-day', 'Begin van dag gereserveerd!'];
            }

            if(date.getTime() === startDate.getTime()) {
                return [true, 'end-of-day', 'Einde van dag gereserveerd!'];
            }

            if(date >= startDate && date <= endDate) {
                return [true, 'full-day', 'Gereserveerd!'];
            }

        }
        return [true, '', ''];
    }
});

我了解当前情况:

期望的情况:

目前2个区间相互跟随只显示半天。我想要的是当开始日期和结束日期在同一天时,它显示一整天。

如果需要任何其他信息,请询问。对此很陌生。 提前致谢!

编辑:

这是我得到的 json 的示例

var testJson = [{
    "startDate": "2015, 5, 1",
        "endDate": "2015, 5, 4"
}, {
    "startDate": "2015, 5, 4",
        "endDate": "2015, 5, 11"
}];

编辑:

感谢接受的答案,它完美地工作,如下所示(并在接受的答案的 fiddle 中展示:

var testJson = [
    {
        "startDate": "2015, 6, 8",
        "endDate": "2015, 6, 15"
    },
    {
        "startDate": "2015, 6, 15",
        "endDate": "2015, 6, 22"
    },
    {
        "startDate": "2015, 6, 22",
        "endDate": "2015, 6, 29"
    }
];

唯一要记住的是根据开始日期按 升序 顺序保存记录。其余部分完美无缺,因为提供的记录没有重叠。

让我们试一试:

if(testJson[i+1]){
     nextStartDate = new Date(testJson[i+1].startDate);
}
if (date.getTime() === endDate.getTime() && date.getTime() === nextStartDate.getTime()) {
     return [true, 'full-day', 'Gereserveerd!'];
}
  1. 保存下一个开始日期
  2. 检查当前日期是否与当前结束日期和下一个开始日期相同,如果是,则return它是一整天

Demo