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)