PHP Расчет даты следующего события - PullRequest
0 голосов
/ 13 июня 2011

У меня есть база данных, которая содержит события в следующем формате:

Расписания

id  
show_id
starttime - datetime
endtime - datetime
repeatuntil - datetime
repeat - int
nthdayofmonth - int
repeatmultiple - int

show_id содержит идентификационный номер для сохраненного шоу.

Шоу могут храниться несколько раз для разных повторяющихся или разных дней / времени.

startime, endtime и repeatuntil немного очевидны в отношении того, что они делают.

repeat - это тип повторения:

1 - hourly
2 - daily
3 - weekly
4 - monthly
5 - yearly

nthdayofmonth не на 100% ли этотребуется или будет использоваться repeatmultiple для использования в тех случаях, когда требуется повторять события каждую вторую неделю или каждый месяц, и так далее ...


Я боролся с кодом, которыйрассчитывает, когда произойдет следующее событие, я пробовал различные решения из Интернета и stackoverflow, но все еще борется.Большую часть времени мой код заканчивается бесконечным циклом и не может определить правильную дату для следующего события.

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

1 Ответ

0 голосов
/ 13 июня 2011

Я думаю, что вы можете подойти к этому, охарактеризовав две функциональные возможности, которые вам действительно нужны здесь.

Во-первых, вам нужен метод вычисления следующего DateTime, который будет выполняться с учетом Show. Это не зависит от других Show и не имеет ничего общего с тем, что будет первым. Вам нужен метод, который с учетом критериев starttime, endtime, etc рассчитает при следующем выполнении этого Show.

Как только вы сможете определить, когда будет выполняться любой заданный Show, вы можете перейти к определению , которое Show выполнит следующим. Вы можете циклически проходить по базе данных, вычисляя значения Next и сохраняя самое ближайшее ... или даже сериализовать значение Next DateTime для каждого Show и запросить в базе данных самое маленькое значение.

...