Обходной путь может быть рассчитан с отметкой времени unix. Один час имеет 3600 секунд = 3600000 миллисекунд:
const timeSlots = [];
let startDate = moment.utc('2020-03-09 11:00').valueOf();
let endDate = moment.utc('2020-03-09 14:30').valueOf();
while ((endDate-startDate) >= 3600000) {
timeSlots.push(moment.utc(startDate));
startDate += 3600000;
}
console.log(timeSlots.map(slot => slot.toString()));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
ОБНОВЛЕНИЕ:
После некоторого исследования кажется, что утверждение console.log(timeSlots)
является проблемой. Это регистрирует некоторые внутренние свойства, которые нам не нужны. Кажется, это работает как ожидалось, если мы используем:
const timeSlots = [];
let startDate = moment('2020-03-09 11:00');
let endDate = moment('2020-03-09 12:30');
while (endDate.diff(startDate, 'minutes') >= 60) {
timeSlots.push(startDate.clone());
startDate.add(30, 'minutes');
}
console.log(timeSlots.map(slot => slot.format()));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>