如何在设定的日期范围内构建每小时分钟数的数组。
假设您有这些日期
const start = new Date('2019-04-04 12:14');
const end = new Date('2019-04-04 16:21');
如何将其变成如下所示的数组:
const minutes_per_hour = [
{
hour: 12,
minute_count: 46
},
{
hour: 13,
minute_count: 60
},
{
hour: 14,
minute_count: 60
},
{
hour: 15,
minute_count: 60
},
{
hour: 16,
minute_count: 21
}
];
最佳答案
这是一个简单的函数,应该可以完成您想要的操作。它的工作原理是重复计算直到下一个小时(或 end
,如果更接近的话)的分钟数,并递增到下一个小时,最终在到达 end
时停止。
/**
* Gets the minutes in each sequential hour in a time range
* @param {Date} start
* @param {Date} end
* @return {{hour:number, minute_count:number}[]}
*/
function getMinutesPerHour(start, end) {
const outp = [];
let current = start;
while (current < end) {
const minutesToNextHour = 60 - current.getMinutes();
const nextHour = new Date(+current + minutesToNextHour * 60 * 1000);
const minutes = nextHour > end
? end.getMinutes() - current.getMinutes()
: minutesToNextHour;
outp.push({ hour: current.getHours(), minutes: minutes, });
current = nextHour;
}
return outp;
}
console.log(getMinutesPerHour(new Date('2019-04-04 12:14'), new Date('2019-04-04 16:21')));
关于javascript - javascript 中日期范围内的每小时分钟数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55536235/