У меня есть приложение календаря, которое использует более новые классы PHP DateTime. У меня есть способ справиться с повторяющимися событиями, но это кажется взломанным, и я хотел посмотреть, есть ли у вас, ребята, лучшие идеи:
- У меня повторяющееся событие, которое начинается 16.11.2009 (16 ноября 2009 г.)
- Это будет происходить каждые 3 дня
- Событие будет повторяться бесконечно
Допустим, пользователь смотрит на календарь на 31 декабря - это событие должно отображаться там, повторяясь каждые 3 дня, как обычно. Вопрос в том, как рассчитать эти дни в этом месяце?
=========================================
Вот как я это делаю, но я знаю, что упускаю что-то проще:
- Я рассчитываю разницу в днях между началом просматриваемого месяца (1 декабря 3100 г.) и датой начала события (16 ноября 2009 г.), хранящимся в виде $ daysDiff
- Я вычитаю модуль, так что я получаю коэффициент 3 дня с начала, как это: $ daysDiff - ($ daysDiff% 3)
- Ради аргумента скажем, что 29 ноября у меня 3100 как дата.
- Затем я добавляю 3 дня к этой дате несколько раз, пока у меня не появятся все даты в течение декабря 3100
Моя основная проблема связана с шагом 1. Функция PHP DateInterval :: date_diff не рассчитывает разницу в днях. Это даст мне годы, месяцы и дни. Затем я должен выдумать цифры, чтобы получить приблизительную дату около 3100 года.
16.11.2009 + (1090 лет * 365,25 дней) + (9 месяцев * 30,5 дней) + 15 дней
Когда вы идете НАСТОЯЩЕЕ далеко в будущее, например, в 9999 году, эта оценка может быть отклонена на месяц, тогда я должен вычесть много 3-дневных интервалов, чтобы добраться туда, где мне нужно.