[Php] Speichern von Wiederholungsdaten unter Berücksichtigung der Sommerzeit


Answers

Question

Ich speichere Ereignisse in meiner Datenbank. Ich habe die Datumsangaben 'Start' und 'Ende', 'tickets_start' und 'tickets_end' (wenn der Ticketverkauf tatsächlich beginnt / endet - im Gegensatz zum Start / Ende des eigentlichen Events).

Bis jetzt habe ich Methoden entwickelt, die all die spaßigen Dinge tun, wie das Konvertieren von Datum / Uhrzeit in GMT vor dem Speichern und dann zurück in die entsprechende Zeitzone für die Anzeige.

Ich speichere die Zeitzone in einem Varchar-Feld mit Werten wie "America / New_York".

Aber - jetzt muss ich mich damit befassen, wenn der Benutzer sich wiederholende Ereignisse zulassen will. Ich habe es schon einmal gemacht, und es ist kein so großer Deal, aber nie über mehrere Zeitzonen hinweg.

Zuerst dachte ich, es wäre keine große Sache, aber dann erkannte, dass - wenn das anfängliche Startdatum im Juli (als Beispiel) war und es jeden Monat für ein Jahr wiederholt, irgendwann, wird die Sommerzeit es schaffen so dass die Umwandlung von GMT eine Zeit anders ändern wird. Ein Monat, wenn 12:00 konvertiert wird, würde es auf -5 ändern, und das nächste würde es zu -4 wegen DST ändern.

Mein derzeitiger Gedanke ist, dass ich ein "dst" tinyint (1) speichern werde, ob die Start- / Enddaten während der Sommerzeit eingegeben wurden, und dann eine Methode erstellen, um die Zeit um eine Stunde zu ändern, falls erforderlich.

Aber - dachte ich, ich würde hier in der Hoffnung fragen, vielleicht gibt es ein "normales" dafür oder ein leichtes, woran ich nicht denke.

(Kuchenphp 2.4.x)