Используйте luxon для переключения между двумя датами, чтобы создать временной интервал

#javascript #datetime #luxon

Вопрос:

У меня есть даты UTC, хранящиеся в коллекции примерно так:

 "orderBeforeStartTime" : ISODate("2021-03-20T14:00:00.000Z"),
"orderBeforeEndTime" : ISODate("2021-03-20T16:00:00.000Z")
 

Я хочу сделать цикл, который начинается orderBeforeStartTime и заканчивается, orderBeforeEndTime чтобы заполнить массив временными интервалами.

Поэтому, например, используя приведенные выше данные, я должен получить массив как таковой:

 ['14:00', '14:30', '15:00', '15:30', '16:00'];
 

Между каждым номером должен быть интервал в 30 минут, пока я не достигну orderBeforeEndTime .

Мой код:

 const { DateTime } = require("luxon");
let startDate;

const endDate = DateTime.fromHTTP(
    item.timeSegment.orderBeforeEndTime.toUTCString()
);

if (new Date() > item.timeSegment.orderBeforeStartTime) {
    startDate = DateTime.utc();
} else {
    startDate = DateTime.fromHTTP(
    item.timeSegment.orderBeforeStartTime.toUTCString()
    );
}

while (startDate <= endDate) {
    item.orderTimeSegments.push(
    startDate.toLocaleString(DateTime.TIME_24_SIMPLE)
    );
    startDate = startDate.plus({ minutes: 30 });
}
 

Это правильный способ сделать это?

Комментарии:

1. Вы читали документацию ? Есть plus метод, который добавит длительность к дате. Сделайте продолжительность 30 минут, добавляйте ее до orderBeforeStartTime тех пор, пока она не станет orderBeforeEndTime

2. Спасибо, я обновил свой пост кодом, чтобы проверить, правильна ли моя логика