@dryuzhuk

Как сгенировать массив из времени с интервалом?

Как на is сгенировать массив из времени с определенным интервалом имея начальное и конечное время?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
Удобно работать с объектами Date.
const makeDate = HHMM => {
  const [H, M] = HHMM.split(':').map(Number);
  const D = new Date();
  D.setHours(H);
  D.setMinutes(M);
  D.setSeconds(0);
  return D;
};

const oo = n => n.toString().padStart(2, '0'); // 5 => '05'

const fillTime = (startHHMM, finishHHMM, intervalMinutes) => {
  let startDate = makeDate(startHHMM);
  let finishDate = makeDate(finishHHMM);
  if (startDate > finishDate) { // объекты Date можно так сравнивать
    [startDate, finishDate] = [finishDate, startDate]; // поменять местами
  }

  const dates = [];
  const D = new Date(startDate);
  while (D <= finishDate) {
    dates.push(new Date(D));
    D.setMinutes(D.getMinutes() + intervalMinutes);
  }

  return dates.map(D => [D.getHours(), D.getMinutes()].map(oo).join(':'));
};

console.log(fillTime('15:56', '18:15', 17));
// [ "15:56", "16:13", "16:30", "16:47", "17:04", "17:21", "17:38", "17:55", "18:12" ]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы