gpt4 book ai didi

javascript - 从日期 Javascript 集合中查找日期范围

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:42 24 4
gpt4 key购买 nike

我知道这类似于 Question ,但我需要不同的结果和 JavaScript。

我有一串这样的日期,可能没有按顺序排列。 03/27/2017,03/28/2017,03/29/2017,04/04/2017,04/05/2017,04/06/2017,04/12/2017,04/13/2017,04/14/2017, 05/02/2017

日期格式为mm/dd/yyyy

我需要将其拆分为日期数组,我可以做到。但是然后我需要遍历所有日期,如果日期是连接的,那么它需要是一个日期范围。如果只有一个日期,那么它将是一个日期范围。

所以我需要上述日期的这些结果。

[
{'start': 03/27/2017, 'end': 03/29/2017 },
{'start': 04/04/2017, 'end': 04/06/2017},
{'start': 04/12/2017, 'end': 04/14/2017 },
{'start': 05/02/2017, 'end': 05/02/2017}
]

我正在用 JavaScript、Typescript、lodash、angular 1.6 开发这个应用。

非常感谢任何帮助。

编辑

我有一个弹出式日历,用户可以选择多个日期。如果日期是连续的,那么这就是日期范围,如果它是一个日期,那么单独的日期就是日期范围。这是用户选择他们想要的休假日期所必需的,然后这些将被插入到数据库中。

最佳答案

Here is how I did it .我将它们转换为日期,然后进行数学计算以查看下一个日期是否大于一天。如果是,那么我停止当前的日期范围并开始下一个日期范围。

let string = '03/27/2017,03/28/2017,03/29/2017,04/04/2017,04/05/2017,04/06/2017,04/12/2017,04/13/2017,04/14/2017, 05/02/2017';
//split them and pull out any white spaces from beginning and end
let dates = string.split(',').map(s=>{
s = s.trim();
let nums = s.split('/');
let d = new Date(nums[2], nums[0], nums[1]);
return {date:d, string: s};
});
let currentStart = dates[0];
let result = [];
for(let i = 1; i < dates.length; i++){
let {date, string} = dates[i];
//If last date, add range
if(i == dates.length -1){
console.log("hello");
result.push({start: currentStart.string ,end: string});
} else {
let prevDate = dates[i-1] || currentStart; //in case prevDate is undefined
let nextDate = dates[i+1];
let diff = nextDate.date.getTime() - date.getTime();
if(diff > (24 * 60 * 60 * 1000)){
result.push({start: currentStart.string ,end: string});
currentStart = nextDate;
}
}
}

console.log(result, 'result');

关于javascript - 从日期 Javascript 集合中查找日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42987118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com