如何在设定的日期范围内构建每小时分钟计数的数组。
假设你有这些日期
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')));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句