Cómo almacenar las fechas de repetición teniendo en cuenta el horario de verano

Estoy almacenando eventos en mi base de datos. Tengo las fechas de inicio y finalización de las entradas, 'tickets_start' y 'tickets_end' (para cuando las ventas de boletos realmente comienzan / terminan, a diferencia del inicio / final del evento real).

Hasta ahora, he creado métodos que hacen todas las cosas divertidas, como convertir la fecha / hora a GMT antes de guardar, y luego volver a su respectiva zona horaria para su visualización.

Estoy almacenando la zona horaria en un campo varchar con valores como "America / New_York".

Pero, ahora necesito comenzar a tratar si el usuario quiere permitir eventos repetidos. Lo he hecho antes, y no es gran cosa, pero nunca en múltiples zonas horarias.

Al principio, pensé que no sería gran cosa, pero luego me di cuenta de que, si la fecha de inicio inicial era en julio (como ejemplo) y se repite todos los meses durante un año, en algún momento, el horario de verano lo hará. De modo que la conversión de GMT cambiará una hora de forma diferente. Un mes, al convertir 12:00, lo cambiaría a -5, y al siguiente, lo cambiaría a -4 debido a DST.

Mi idea actual es que almacenaré un "dst" tinyint (1) para saber si las fechas de inicio / finalización se ingresaron durante el horario de verano, y luego crearé un método para modificar la hora en una hora si es necesario.

Pero, pensé que preguntaría aquí con la esperanza de que haya algo "normal" para esto o algo fácil en lo que no estoy pensando.

(cakephp 2.4.x)

Respuestas a la pregunta(1)

Su respuesta a la pregunta