Skoro mówisz o planowaniu przyszłości czas, przechowywanie tylko UTC niekoniecznie jest najlepszym podejściem.
Pamiętaj, że zasady dotyczące stref czasowych mogą (i się zmieniają). Jeśli zastosujesz aktualizację danych strefy czasowej (w PHP, robi się to za pomocą timezonedb PECL pakiet), to wszelkie dane, które już przekonwertowałeś na UTC, mogą być nieprawidłowe.
Lepszym rozwiązaniem jest przechowywanie wielu wartości:
-
Oryginalna lokalna data i godzina
-
Oryginalna strefa czasowa (np.
"America/New_York"
) -
Data i czas UTC przekonwertowane z wartości lokalnych
Jeśli chcesz sprawdzić, czy nadszedł czas na uruchomienie zadania, porównaj bieżącą datę i godzinę UTC z zapisaną wartością UTC.
Po zastosowaniu aktualizacji stref czasowych wyrzucasz poprzednio przekonwertowane wartości UTC dla wszystkich przyszłych wpisów i ponownie obliczasz nowe na podstawie zaktualizowanych danych.
Jeśli tego nie zrobisz, tracisz intencję pierwotnie podaną przez użytkownika. A jeśli nie będziesz aktualizować danych strefy czasowej, Twój system nie będzie wiedział o różnych zmianach zachodzących na całym świecie, takich jak zmiany wprowadzone w Egipcie na początku tego roku lub zmiany, które pojawią się w październiku w Rosji.
Ostatni punkt — jeśli zostanie prawidłowo zaimplementowany, strefa czasowa serwera nie powinna mieć znaczenia. Porównaj UTC z UTC.