2014-08-28 2 views
0

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

В дополнение к другой информации, собранной о каждом событии, я соберу будний день, по которому будут проходить каждое событие, и даты (календарные даты), по которым начнется и закончится событие.

Пример:

Event:  Go to gym (the event I plan to do once a week) 
Day of Week: Sunday  (day of week event will occur (every Sunday)) 
Start Date: 2014-09-01 (happens to be a Monday) 
End Date: 2015-08-31 (...) 

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

So the first date I should see scheduled to go to the gym will be: 
2014-09-07 
because this is first Sunday following the start date. 

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

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

Спасибо всем, кто читает и отвечает.

Пробовал:

SQL: grouping, different select statements, and stuff 
PHP: stuff, date/time stuff, and stuff stuff 
+0

Каким образом даты хранятся в базе данных? Временные отметки или даты или ...? Пожалуйста, вставьте то, что вы пробовали, возможно, вы были в правильном направлении, но просто сделали ошибку на дороге. – Naruto

ответ

0

Для следующего события в расписании можно использовать strtotime функции:

strtotime('2014-09-01 next Sunday'); 

и использование вернулось UNIX времени.

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

В другой руке даты боли в голове, поэтому алгоритм вычисления всех окасионов может быть намного больше. Вы можете использовать интервалы, рассчитанные из разницы даты результата с первой даты, если $firstDate = $startDate или если событие происходит каждый день один раз в неделю, то просто добавьте к нему 7 дней.

Опубликовать более подробную информацию или ваше решение, чтобы найти ошибки.

Смежные вопросы