Алгоритм обнаружения перекрывающихся периодов времени повторения

Я пытаюсь обнаружить коллизию событий в зависимости от рекурсивности дней и расписания.

Более сложная версия, чем эта проблема Алгоритм для обнаружения периодов перекрытия.

Мой случай: Событие A начинается с 8:00 до 13:00 по вторникам, субботам и субботам, между двумя датами.

Событие B начинается с 11:00 до 14:00 по вторникам и по будням между двумя датами (отличиями от события A)

Здесь я покрасил столкновение между двумя событиями.

Я потратил час, пытаясь написать алгоритм, чтобы определить, существует ли хотя бы одно столкновение между двумя событиями.

Кстати, дата окончания события (тенденция) может быть неопределенной.

Существует ли существующий алгоритм для управления этим?

введите описание изображения здесь

Ответ 1

Определите, какой из них заканчивается первым. Если оба A и B не ограничены, просто выберите случайную дату в будущем.

Я собираюсь предположить, что ваши события повторяются еженедельно (каждую неделю там одни и те же повторяющиеся времена). Если это не так, замените неделю наибольшей репрезентацией (месяц/год/независимо).

Возьмите последнюю неделю до даты, выбранной на первом шаге. Создайте все события, которые происходят на этой неделе (убедитесь, что вы выполняете все проверки, так как одно из событий может начать повторяться в этот период. Для каждого события у вас должна быть конкретная метка времени для начала и конца. по крайней мере некоторые из них делают, тогда у вас есть столкновение. Если нет, тогда вы добры.