日期的连续性并相应地创建开始和结束日期对象"/>
如何检查数组中日期的连续性并相应地创建开始和结束日期对象
我有一个日期数组,我想通过检查继续日期来创建包含开始和结束的对象。例
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()
的工作:
更多推荐
如何检查数组中日期的连续性并相应地创建开始和结束日期对象
发布评论