Минуты в час в диапазоне дат в JavaScript - PullRequest
0 голосов
/ 05 апреля 2019

Как построить массив с количеством минут в час в заданном диапазоне дат.

Если у вас есть эти даты

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
    }
];

1 Ответ

1 голос
/ 05 апреля 2019

Вот простая функция, которая должна делать то, что вы хотите.Он работает путем многократного вычисления минут до следующего часа (или 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')));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...