2009-07-12 28 views
6

Actualmente estoy trabajando en una aplicación que permite a las personas programar "Shows" para una estación de radio en línea.Repetición de "Eventos" (Calendario)

Quiero la capacidad del usuario para configurar un evento repetido, digamos por ejemplo: -

espectáculo "Manic Monday" - todos los lunes de 9-11 "Mes mediados de locura" - cada segundo jueves del Mes "Este mes nueva música" - 1 de cada mes.

Lo que, en su opinión, es la mejor manera de modelar esto (basado en una estructura MVC/MTV).

Nota: Actualmente estoy codificando esto en Django. Pero estoy más interesado en la teoría detrás de esto, que en detalles específicos de implementación.

Respuesta

9

Ah, eventos repetidos - uno de los peligros de mi vida, junto con las zonas horarias. El calendario es difícil.

Usted podría querer modelar esto en términos de RFC2445. Sin embargo, eso puede darte mucha más flexibilidad y complejidad de la que realmente deseas.

Algunas cosas a tener en cuenta:

  • ¿necesita una granularidad más fina que un cierto tiempo en las fechas dadas? Si necesita repetir en función del tiempo también, se vuelve más complicado.
  • Considere casos de esquina de fecha como "el 30 de cada mes" y lo que eso significa para años bisiestos
  • Considere casos de esquina de tiempo como "1.30am todos los días" - a veces 1.30 puede ocurrir dos veces, y a veces puede no ocurre en absoluto, debido al horario de verano
  • ¿Necesita compartir el horario con personas en otras zonas horarias? Eso hace la vida más difícil de nuevo
  • ¿Necesita representar el número de veces que ocurre un evento, o una fecha final en la que ocurre? ("Recuento" o "hasta", básicamente.) Puede que tampoco necesite ninguno, o puede necesitar uno o ambos.

Me doy cuenta de que esta es una lista de cosas en que pensar más que una respuesta definitiva, pero creo que es importante definir los parámetros de su problema antes de intentar encontrar una solución.

+0

Algunos buenos comentarios ... incluso si no es una respuesta definitiva. – Mez

0

He pensado que se deben generar eventos repetidos cuando se guarda el evento original con un nuevo modelo. Esto significa que no estoy procesando al azar cada vez que se carga el calendario (y significa que también puedo, por ejemplo, cancelar un "Mostrar" en una serie) pero también significa que tengo que limitar esto a un cierto marco de tiempo, por lo que si alguien dijera, un año en el futuro, no vería estos espectáculos repetidos. Pero en algún momento, tendrían que (potencialmente) volver a generarse.

+1

Normalmente, cancelará/cambiará un evento de forma recurrente utilizando un evento de "excepción". –

+0

Hmm ... ¡no había pensado en eso! – Mez

Cuestiones relacionadas