如何在设定的日期范围内构建每小时分钟计数的数组。
假设你有这些日期
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
}
];发布于 2019-04-05 13:45:43
这里有一个简单的函数,它可以做你想做的事情。它的工作方式是反复计算分钟数,直到下一个小时(或者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')));
https://stackoverflow.com/questions/55536235
复制相似问题