PHP-Sommerzeit-Rätsel

Ich habe eine allgemeine Frage zum Umgang mit der Sommerzeit. Ich denke, es ist nicht wirklich PHP-spezifisch, aber ich schreibe in PHP, also würde es nicht schaden, es einzuschließen.

Ich habe eine Kalender-App, die mit jquery fullcalendar erstellt wurde. Der Benutzer sieht Ereignisse in seiner lokalen Zeitzone und mein Server speichert sie als UTC-Zeit in MySQL. (Andere Fragen zum Stackoverflow deuten darauf hin, dass dies der beste Weg ist, um mit Zeitzonen umzugehen.) Daher findet jedes Mal eine Konvertierung statt, wenn der Benutzer Ereignisse im Kalender speichert oder anzeigt. Das funktioniert gut, aber ich bin verwirrt darüber, wie ich am besten mit der Sommerzeit umgehen soll.

Angenommen, ein Benutzer in der Zeitzone EST (östliche Standardzeit) erstellt ein Ereignis, bei dem sich die Sommerzeit für 15 Uhr NICHT täglich wiederholt. Mein PHP-Code verwendet die Standardklasse DateTime (und DateTimeZone), um UTC-5: 00-Konvertierungen zwischen UTC und EST durchzuführen. Wenn die Sommerzeit aktiv ist, dreht die Uhr eine Stunde weiter und PHP konvertiert stattdessen zwischen UTC und EST um UTC-4: 00. Aus Sicht des Benutzers wird das Ereignis dann von ursprünglich 15.00 Uhr auf 16.00 Uhr verschoben. Dies ist nicht das, was meine Benutzer und ich wollen. Eine Veranstaltung um 15:00 Uhr sollte unabhängig von der Sommerzeit eine Veranstaltung um 15:00 Uhr bleiben. Was ist der beste Weg, um damit umzugehen? Gibt es in PHP eine Möglichkeit, die Sommerzeit zu ignorieren?

Mein Code:

$getDate = new DateTime($storedDate, new DateTimeZone('UTC'));
$getDate->setTimezone(new DateTimeZone('America/New_York'));
$getDateString = $getDate->format('Y-m-d H:i:s');

MEHR INFO: (kopiert von meinen Kommentaren unten)

-Nur das erste Auftreten eines sich wiederholenden Ereignisses wird gespeichert. Alle anderen Ereignisse werden im laufenden Betrieb entsprechend der vom Benutzer gewünschten Kalenderansicht (Monats-, Wochen- oder Tagesansicht) erstellt. So wie ich es codiert habe, werden nur die Vorkommen erstellt, die in der Ansicht sichtbar sind.

-Das ist, ich muss es auch für andere Zeitzonen konstant halten. Um das ursprüngliche Beispiel fortzusetzen, sollte 15 Uhr in EST (unabhängig von der Sommerzeit) 15 Uhr bleiben. Wenn das Ereignis jedoch in der Zentralzeit angezeigt wird, sollte das Ereignis auch 14 Uhr (unabhängig von der Sommerzeit) bleiben.

Grundsätzlich muss ich die Sommerzeit irgendwie ignorieren.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage