查找是开始日期和结束日期之间的日期

时间:2016-06-09 15:22:13

标签: javascript date momentjs

我有一个包含日期的对象数组,如果用户添加了另一个开始日期和结束日期,则它不能与数组中的任何现有日期重叠。

使用Moment我有这个循环,但输入重叠的日期时没有触发警告

使用输入日期startDate: "2013-09-02T00:00:00", endDate: "2015-05-05T00:00:0,最后一个数组项的循环应触发警报,因为日期重叠。

  let resultData = data.row;
    let array = this.props.sectionData;

    let inputStartDate = Moment(resultData.startDate, "DD/MM/YYYY");
    let inputEndDate   = Moment(resultData.endDate, "DD/MM/YYYY");

    array.forEach( function (i) {

        if(i.startDate && i.endDate) {

            let startDate = Moment(i.startDate, "DD/MM/YYYY");
            let endDate = Moment(i.endDate, "DD/MM/YYYY");

            if (inputStartDate.isBetween(startDate, endDate) || inputEndDate.isBetween(startDate, endDate)) {
                alert('date range cannot overlap');
            }
        }

    });

我的数据:

[
{"id": 3,
"startDate": 2013-09-01T00:00:00,
"endDate": 2013-09-01T00:00:00,
"description": null,
"userId": 900,
"userName": "",
"documents": [],
},
{
"id": 5,
"startDate": 2013-09-01T00:00:00,
"endDate": 2013-09-01T00:00:00,
"description": null,
"userId": 1,
"userName": "",
"documents": [],
"contributors": []
},
{
"id": 6,
"startDate": "2013-09-01T00:00:00",
"endDate": "2014-08-31T00:00:00",
"description": "content",
"userId": 1,
"userName": ""
},

1 个答案:

答案 0 :(得分:0)

让我们解析对象。有关工作示例,请参阅https://plnkr.co/edit/OqKNDsSWvcMc3PXOcu9F?p=preview

说明:

let inputStartDate = moment("2013-09-02T00:00:00");
let inputEndDate   = moment("2015-05-05T00:00:00");

正如ADyson解释说你传递的格式不正确。此外,您在测试数据中缺少ids 3和5日期的引号。