javascript中日期范围内的每小时分钟数

时间:2019-04-05 13:12:59

标签: javascript arrays ecmascript-6

如何在设定的日期范围内以每小时的分钟数构建数组。

假设您有这些日期

COMPILE_DEFINTIIONS

如何将其转换为数组,如下所示:

const start = new Date('2019-04-04 12:14');
const end = new Date('2019-04-04 16:21');

1 个答案:

答案 0 :(得分:1)

这是一个简单的函数,可以执行您想要的操作。它的工作方式是重复计算直到下一个小时(或者更接近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')));