用js写一段代码,已有programs数组长度为0-3,programs数组内对象有起始时间start,截止时间end,输出program对象内的start和end不与programs数组重合的时间数组
时间: 2024-02-24 07:59:47 浏览: 37
好的,以下是一段使用 JavaScript 实现的代码,可以满足您的需求:
```javascript
// 定义 programs 数组,包含若干个 program 对象
let programs = [
{ start: new Date("2021-09-01T08:00:00"), end: new Date("2021-09-01T09:00:00") },
{ start: new Date("2021-09-01T10:00:00"), end: new Date("2021-09-01T11:00:00") },
{ start: new Date("2021-09-01T12:00:00"), end: new Date("2021-09-01T13:00:00") }
];
// 计算可用时间段的函数
function getAvailableTime(programs) {
let availableTime = []; // 存储可用时间段的数组
let start = new Date("2021-09-01T00:00:00"); // 可用时间段的开始时间
let end = new Date("2021-09-01T23:59:59"); // 可用时间段的结束时间
for (let i = 0; i < programs.length; i++) {
let p = programs[i];
if (p.start >= start && p.start <= end) {
end = new Date(p.start.getTime() - 1);
}
if (p.end >= start && p.end <= end) {
start = new Date(p.end.getTime() + 1);
}
}
if (start <= end) {
availableTime.push({ start: start, end: end });
}
return availableTime;
}
// 输出可用时间段
let availableTime = getAvailableTime(programs);
console.log(availableTime);
```
这段代码会计算出 programs 数组中所有 program 对象的时间段之间的空隙,并将它们存储在 availableTime 数组中。在示例代码中,我们假设可用时间段是从当天的 00:00:00 到 23:59:59,您可以根据实际需求进行修改。