最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何检查数组中日期的连续性并相应地创建开始和结束日期对象

IT培训 admin 13浏览 0评论

如何检查数组中日期的连续性并相应地创建开始和结束日期对象

我有一个日期数组,我想通过检查继续日期来创建包含开始和结束的对象。例

dateArray = [
                "2020-01-22T00:00:00.000Z",
                "2020-01-23T00:00:00.000Z",
                "2020-01-28T00:00:00.000Z",
                "2020-01-29T00:00:00.000Z",
                "2020-01-30T00:00:00.000Z",
                "2020-01-31T00:00:00.000Z",
                "2020-02-01T00:00:00.000Z",
                "2020-02-02T00:00:00.000Z",
                "2020-02-03T00:00:00.000Z",
                "2020-02-04T00:00:00.000Z",
                "2020-02-05T00:00:00.000Z",
                "2020-02-06T00:00:00.000Z",
                "2020-02-07T00:00:00.000Z",
                "2020-02-16T00:00:00.000Z",
                "2020-02-17T00:00:00.000Z",
                "2020-02-18T00:00:00.000Z",
                "2020-02-19T00:00:00.000Z",
                "2020-02-20T00:00:00.000Z"
            ]

myRequirement = [{
    start: "2020-01-22T00:00:00.000Z",
    end: "2020-01-22T00:00:00.000Z"
  },
  {
    start: "2020-01-28T00:00:00.000Z",
    end: "2020-02-07T00:00:00.000Z"
  },
  {
    start: "2020-02-16T00:00:00.000Z",
    end: "2020-02-20T00:00:00.000Z"
  }
]

我想在node.js中使用。我使用一些嵌套的for循环尝试了此操作。首先,我在主dateArray上运行循环,然后检查是否为第一个日期,如果为第一个日期,则将其存储为第一个对象开始日期,然后在下一个日期的情况下检查是否为上一个日期的下一个最近日期。 >

let gapArray = [];
            let startEndObj = {};
            let tempStartDate;
            let tempEndDate;

            let tempNextDate;
            await asyncForEach(finalAvailablityDatesArrayOFi.availeblityDatesArray, async (availeblityDatesArrayOFi) => {
                console.log("availeblityDatesArrayOFi", availeblityDatesArrayOFi);

                if (!tempStartDate) {
                    console.log("In if");
                    startEndObj.startDate = availeblityDatesArrayOFi;
                    tempStartDate = availeblityDatesArrayOFi;
                    let oneDatePlus = new Date(availeblityDatesArrayOFi).setDate(new Date(availeblityDatesArrayOFi).getDate() + 1);
                    tempNextDate = new Date(oneDatePlus);
                    console.log("startEndObj", startEndObj);
                }
                else if (tempStartDate) {
                    console.log("in else");

                    if (new Date(availeblityDatesArrayOFi).getTime() == new Date(tempNextDate).getTime()) {
                        console.log("Do nothing!");
                        tempStartDate = availeblityDatesArrayOFi;
                        tempEndDate = availeblityDatesArrayOFi;
                        let oneDatePlus = new Date(availeblityDatesArrayOFi).setDate(new Date(availeblityDatesArrayOFi).getDate() + 1);
                        tempNextDate = new Date(oneDatePlus);
                    }
                    else {
                        startEndObj.endDate = new Date(tempEndDate);
                        gapArray.push(startEndObj);
                        tempStartDate = '';
                        tempEndDate = '';
                        startEndObj = {};
                    }
                }
            });

谢谢!

我有一个日期数组,我想通过检查继续日期来创建包含开始和结束的对象。例如dateArray = [“ 2020-01-22T00:00:00.000Z”,“ 2020-01-23T00:00:...

回答如下:

看起来像Array.prototype.reduce()的工作:

如何检查数组中日期的连续性并相应地创建开始和结束日期对象

我有一个日期数组,我想通过检查继续日期来创建包含开始和结束的对象。例

dateArray = [
                "2020-01-22T00:00:00.000Z",
                "2020-01-23T00:00:00.000Z",
                "2020-01-28T00:00:00.000Z",
                "2020-01-29T00:00:00.000Z",
                "2020-01-30T00:00:00.000Z",
                "2020-01-31T00:00:00.000Z",
                "2020-02-01T00:00:00.000Z",
                "2020-02-02T00:00:00.000Z",
                "2020-02-03T00:00:00.000Z",
                "2020-02-04T00:00:00.000Z",
                "2020-02-05T00:00:00.000Z",
                "2020-02-06T00:00:00.000Z",
                "2020-02-07T00:00:00.000Z",
                "2020-02-16T00:00:00.000Z",
                "2020-02-17T00:00:00.000Z",
                "2020-02-18T00:00:00.000Z",
                "2020-02-19T00:00:00.000Z",
                "2020-02-20T00:00:00.000Z"
            ]

myRequirement = [{
    start: "2020-01-22T00:00:00.000Z",
    end: "2020-01-22T00:00:00.000Z"
  },
  {
    start: "2020-01-28T00:00:00.000Z",
    end: "2020-02-07T00:00:00.000Z"
  },
  {
    start: "2020-02-16T00:00:00.000Z",
    end: "2020-02-20T00:00:00.000Z"
  }
]

我想在node.js中使用。我使用一些嵌套的for循环尝试了此操作。首先,我在主dateArray上运行循环,然后检查是否为第一个日期,如果为第一个日期,则将其存储为第一个对象开始日期,然后在下一个日期的情况下检查是否为上一个日期的下一个最近日期。 >

let gapArray = [];
            let startEndObj = {};
            let tempStartDate;
            let tempEndDate;

            let tempNextDate;
            await asyncForEach(finalAvailablityDatesArrayOFi.availeblityDatesArray, async (availeblityDatesArrayOFi) => {
                console.log("availeblityDatesArrayOFi", availeblityDatesArrayOFi);

                if (!tempStartDate) {
                    console.log("In if");
                    startEndObj.startDate = availeblityDatesArrayOFi;
                    tempStartDate = availeblityDatesArrayOFi;
                    let oneDatePlus = new Date(availeblityDatesArrayOFi).setDate(new Date(availeblityDatesArrayOFi).getDate() + 1);
                    tempNextDate = new Date(oneDatePlus);
                    console.log("startEndObj", startEndObj);
                }
                else if (tempStartDate) {
                    console.log("in else");

                    if (new Date(availeblityDatesArrayOFi).getTime() == new Date(tempNextDate).getTime()) {
                        console.log("Do nothing!");
                        tempStartDate = availeblityDatesArrayOFi;
                        tempEndDate = availeblityDatesArrayOFi;
                        let oneDatePlus = new Date(availeblityDatesArrayOFi).setDate(new Date(availeblityDatesArrayOFi).getDate() + 1);
                        tempNextDate = new Date(oneDatePlus);
                    }
                    else {
                        startEndObj.endDate = new Date(tempEndDate);
                        gapArray.push(startEndObj);
                        tempStartDate = '';
                        tempEndDate = '';
                        startEndObj = {};
                    }
                }
            });

谢谢!

我有一个日期数组,我想通过检查继续日期来创建包含开始和结束的对象。例如dateArray = [“ 2020-01-22T00:00:00.000Z”,“ 2020-01-23T00:00:...

回答如下:

看起来像Array.prototype.reduce()的工作:

发布评论

评论列表 (0)

  1. 暂无评论