gpt4 book ai didi

javascript - 在日期范围数组中查找 'holes'(间隙)

转载 作者:行者123 更新时间:2023-11-30 08:30:00 25 4
gpt4 key购买 nike

假设您有一组日期范围

var arr = [
{
"from": 'unix 1st of august',
"until": 'unix 5th of august'
},
{
"from": 'unix 15th of august',
"until": 'unix 20th of august'
},
{
"from": 'unix 25th of august',
"until": 'unix 31th of august'
}
];

在时间范围内找到“漏洞”的最简单方法是什么?在这种情况下,5 号到 15 号和 20 号到 25 号丢失了。

function findDateRangeHoles() {
let chunks = [];

arr.forEach(range => {
// ??
chunks.push({from: '?', until: '?'});
});

// Return value example, array of object, each holding a missing date range chunk
[
{
from: 'unix 5th of august',
until: 'unix 15th of august'
},
{
from: 'unix 20th of august',
until: 'unix 25th of august'
}
]

return chunks;
}

let missingChunks = findDateRangeHoles(1st of August, 31 of August); // Array of objects

想知道 momentjs 有什么用吗??

最佳答案

举个例子,以后你应该发一个真实的尝试,你发的不代表你试过。

对它们进行排序,并将范围 a 的结尾与范围 b 的开头作为数字进行比较。在你这样做之后,将你创建的从和直到转换成日期范围

// Assuming they are sorted
var ranges = [{
from: 946702800, // +new Date(2000, 0, 1) / 1000
until: 949381200 // +new Date(2000, 1, 1)
},{
from: 954565200,
until: 957153600
},{
from: 962424000,
until: 965102400
}];

var holes = [];

for (var i=1; i < ranges.length; i++) {
var beginningOfHole = ranges[i-1].until;
var endOfHole = ranges[i].from;
if (beginningOfHole < endOfHole) {
holes.push({from: beginningOfHole + 1, until: endOfHole - 1});
}
}

console.log('holes in ranges', holes.map(hole => ({
from: new Date(hole.from * 1000), // Convert unix timestamp into JS timestamp
until: new Date(hole.until * 1000)
})));

关于javascript - 在日期范围数组中查找 'holes'(间隙),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39469064/

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