Повторение «События» (Календарь) - PullRequest
6 голосов
/ 12 июля 2009

В настоящее время я работаю над приложением, которое позволяет людям планировать «Шоу» для онлайн-радиостанции.

Я хочу, чтобы пользователь мог настроить повторяющееся событие, например, например: -

Шоу "Безумный понедельник" - каждый понедельник с 9-11 «Безумие середины месяца» - каждый второй четверг месяца «В этом месяце новая музыка» - 1-е число каждого месяца.

Какой, по вашему мнению, лучший способ смоделировать это (основанный на структуре MVC / MTV).

Примечание: я на самом деле кодирую это в Django. Но меня больше интересует теория, а не конкретные детали реализации.

Ответы [ 3 ]

9 голосов
/ 12 июля 2009

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

Вы возможно хотите смоделировать это с точки зрения RFC2445 . Однако это может дать вам гораздо большую гибкость и сложность, чем вы действительно хотите.

Несколько вещей для рассмотрения:

  • Вам нужна какая-то более мелкая детализация, чем определенное время в указанные даты? Если вам нужно повторить также по времени, это становится сложнее.
  • Рассмотрим случаи с датой, например, «30 числа каждого месяца» и что это означает для високосных годов
  • Рассмотрим временные рамки, такие как «1.30 утра каждый день» - иногда 1.30 утра может случиться дважды, а иногда может не произойти вообще, из-за перехода на летнее время
  • Вам нужно поделиться расписанием с людьми из других часовых поясов? Это снова усложняет жизнь
  • Вам необходимо указать количество раз, когда событие происходит, или окончательную дату, когда оно происходит? («Считать» или «до» в основном.) Вам может не потребоваться ни то, ни другое, или вам может потребоваться один или оба.

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

1 голос
/ 17 ноября 2011

Из прочтения других постов Мартин Фаулер лучше всего описывает повторяющиеся события. http://martinfowler.com/apsupp/recurring.pdf

Кто-то реализовал эти классы для Java. http://www.google.com/codesearch#vHK4YG0XgAs/src/java/org/chronicj/DateRange.java

0 голосов
/ 12 июля 2009

Мне показалось, что повторные события должны генерироваться при сохранении исходного события с новой моделью. Это означает, что я не выполняю случайную обработку каждый раз при загрузке календаря (и означает, что я также могу, например, отменить одно «Показ» в серии), но также означает, что я должен ограничить это определенным периодом времени, если кто-то скажет, через год, они не увидят эти повторные шоу. Но в какой-то момент их придется (потенциально) перегенерировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...