Я реализую небольшое приложение-календарь с повторяющимися событиями.Событие указывается с использованием синтаксиса crontab.
Выражения могут быть довольно сложными:
00 11 28-31 */3 MON#1,MON#2,MONL */2
^ ^ ^ ^ ^ ^
| | | | | |
| | | | | * - every even year
| | | | * - on first, second and last Monday of month
| | | * - every third month
| | * - since 28th till 31st days of month
| * - at 11AM
* - first minute of the hour
При подготовке отчетов мне нужно подсчитать, сколько раз срабатывает данное повторяющееся событие.Сейчас я использую очень простой подход: просто перебираю все даты в диапазоне и проверяю, соответствует ли условие, но это кажется супер неэффективным.
Поэтому мой вопрос: могу ли я как-то рассчитать количество дней?соответствие заданным условиям без циклического перебора диапазона?
Спасибо.
PS Я много гуглял по этому вопросу и не нашел по крайней мере одну реализацию без циклов.Это что-то из королевства NP?