Для проверки: перекрытие двух RRULE с разными параметрами и временным интервалом - PullRequest
0 голосов
/ 23 мая 2019

Мне нужно создать алгоритм, в котором мне будут предоставлены два разных RRULE с разной частотой, интервалом, количеством и началом. Кроме того, для этих RRULE будут предоставлены соответствующие временные интервалы для создания временных диапазонов, как повторяющихся событий в календаре. Мне нужно проверить, перекрываются ли данные два RRULE с соответствующими временными интервалами хотя бы раз в будущем, пока не будут построены RRULE.

RRULE можно проверить здесь: https://github.com/rlanvin/php-rrule/wiki/RRule

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

Например:

Freq1 = 3 дня
Freq2 = 2 дня
Поэтому gcd = 1 день
Поэтому я проверю, перекрывают ли временные интервалы за 1 день друг друга, сравнивая их часть часов, минут и секунд, а затем перейду только к этапам построения полных RRULE.

Единственная проблема здесь заключается в том, что необходимо рассмотреть множество случаев для различных типов комбинаций частот RRULE.

Если есть лучший способ или какая-то библиотека делает это, пожалуйста, дайте мне знать.

...