Как сделать цикл по времени в JS, чтобы выводились каждые 15 минут между двумя числами времени?

243
16 апреля 2022, 16:20

Столкнулся с проблемой цикла. Не могу понять как написать его правильно.

Есть два времени 11:00 и 20:30. Нужно вывести все возможные времена с разницей в 15 минут. Результатом должно быть 11:15, 11:30, 11:45, 12:00 и так далее до 20:30

У меня получилось создать функции, которые переводят строковое время в дату:

function getDateFromHours(time) {
        time = time.split(':');
        let now = new Date();
        return new Date(now.getFullYear(), now.getMonth(), now.getDate(), ...time);
} 

А также, функцию, которая добавляет 15 минут ко времени

function AddMinutesToDate(date, minutes) {
    return new Date(date.getTime() + minutes * 60000);
}

Итого, я перевожу строковые времена в даты JS:

var companyX = getDateFromHours(workStart);
var companyY = getDateFromHours(workEnd);

И пытаюсь в цикле получить все времена между этими:

for (let i = companyX.getTime(); i < companyY.getTime(); i=companyX.getTime() + 15 * 60000) {
        console.log(new Date(i));
}

Но цикл уходит в бесконечность. Подскажите, как получить все времена с разницей в 15 минут в цикле? Что я делаю не так?

Answer 1

ошибка тут

i=companyX.getTime() + 15 * 60000

должно быть

i +=15 * 60000
READ ALSO
Как анимировать маршрут (path) на SVG карте?

Как анимировать маршрут (path) на SVG карте?

Есть SVG карта созданная на RaphaelКак можно анимировать маршрут между двумя кликами на карте, как например здесь

193
Сортировка в таблице

Сортировка в таблице

Использую такой код сортировка в таблицеВсе работает нормально, но есть один момент который хотелось бы улучшить

106
Прогресс-бар картинкой

Прогресс-бар картинкой

Опыта в php и css у меня всего пара месяцевВозникла необходимость сделать красивый прогресс-бар для браузерной онлайн-игры в виде картинкок(одна...

167
Js ошибка Maximum call stack size exceeded

Js ошибка Maximum call stack size exceeded

Реализовываю алгоритм быстрой сортировки, но она работает только когда элементов меньше чем +-3000Если элементов больше - вылезает эта ошибка

88