Como armazenar datas repetidas tendo em mente o horário de verão

Estou armazenando eventos no meu banco de dados. Eu tenho 'start' e 'end' date times, 'tickets_start' e 'tickets_end' (para quando a venda de ingressos realmente começa / termina - ao contrário do início / fim do evento real).

Até agora, criei métodos que fazem todas as coisas divertidas, como converter a data / hora para o GMT antes de salvar, e depois voltar para o respectivo fuso horário para exibição.

Estou armazenando o fuso horário em um campo varchar com valores como "America / New_York".

Mas agora eu preciso começar a lidar se o usuário quiser permitir a repetição de eventos. Já fiz isso antes, e não é tão grande assim, mas nunca em vários fusos horários.

No começo, achei que não seria grande coisa, mas depois percebi que - se a data de início era em julho (como exemplo), e se repete todo mês durante um ano, em algum momento, o horário de verão chegará ao fim. de modo que a conversão do GMT mude um tempo diferentemente. Um mês, ao converter 12:00, ele mudaria para -5 e, no seguinte, mudaria para -4 devido a DST.

Meu pensamento atual é que eu vou armazenar um tinyint 'dst' (1) para saber se as datas de início / fim foram inseridas durante o horário de verão e, em seguida, fazer um método para alterar o tempo por uma hora se / quando necessário.

Mas - pensei em perguntar aqui na esperança de que talvez haja um "normal" para isso ou algo fácil que eu não esteja pensando.

(cakephp 2.4.x)

questionAnswers(1)

yourAnswerToTheQuestion