Удобно работать с объектами
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" ]