Напишите результат, который вы хотите увидеть.
Я пока понял так, что вам нужно увидеть это:
17:45, 18:15, 18:45, 19:15, 19:45, 20:00
Верно?
UPD.
Не проверял, но должно работать
const timePoints = (start, end, period = 30) => {
const iter = (current, acc) => {
if (moment(current).diff(moment(end), "minutes") > 0) {
acc[acc.length] = end;
return acc;
}
return iter(moment(current).add(period, "minutes"), acc[acc.length] = current)
}
return iter(start, [])
}
const mytimePoints = timePoints('17:45', '20:00', 30)
console.log(mytimePoints)