Jak przechowywać powtarzające się daty pamiętając o czasie letnim

Przechowuję wydarzenia w mojej bazie danych. Mam „daty rozpoczęcia” i „zakończenia”, „bilety startowe” i „bilety na koniec” (kiedy sprzedaż biletów faktycznie się rozpoczyna / kończy - w przeciwieństwie do początku / końca rzeczywistego wydarzenia).

Do tej pory zbudowałem metody, które wykonują wszystkie zabawne rzeczy, takie jak konwersja daty / czasu do GMT przed zapisaniem, a następnie powrót do odpowiedniej strefy czasowej do wyświetlenia.

Przechowuję strefę czasową w polu varchar z wartościami takimi jak „America / New_York”.

Ale - teraz muszę zacząć zajmować się, jeśli użytkownik chce zezwolić na powtarzanie zdarzeń. Robiłem to już wcześniej i nie jest to wielka sprawa, ale nigdy w wielu strefach czasowych.

Na początku myślałem, że to nic wielkiego, ale potem zdałem sobie sprawę, że - jeśli początkowa data rozpoczęcia przypada na lipiec (na przykład) i powtarza się ona co miesiąc przez rok, w pewnym momencie czas na zmiany czasu będzie aby konwersja z GMT zmieniła się inaczej. Miesiąc, podczas konwersji 12:00, zmieniłby go na -5, a następny zmieniłby go na -4 z powodu DST.

Moja obecna myśl jest taka, że ​​zapiszę „dst” tinyint (1), aby ustalić, czy daty początkowe / końcowe zostały wprowadzone w czasie DST, a następnie, w razie potrzeby, zmienić metodę o godzinę.

Ale - pomyślałem, że zapytam tutaj w nadziei, że jest coś „normalnego” dla tego lub łatwego czegoś, o czym nie myślę.

(cakephp 2.4.x)

questionAnswers(1)

yourAnswerToTheQuestion