[php] So speichern Sie wiederkehrende Daten unter Berücksichtigung der Sommerzeit



Answers

Question

Ich speichere Ereignisse in meiner Datenbank. Ich habe 'Datum' und 'Enddatum', 'tickets_start' und 'tickets_end' (für den Fall, dass 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 Sachen machen, wie das Datum / die Zeiten in GMT vor dem Speichern umwandeln und dann zurück in ihre jeweilige Zeitzone für die Anzeige.

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

Aber - jetzt muss ich damit anfangen, wenn der Benutzer wiederholte Ereignisse zulassen will. Ich habe es schon vorher gemacht, und es ist nicht so eine große Sache, aber nie über mehrere Zeitzonen hinweg.

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

Mein aktueller Gedanke ist, dass ich eine 'dst'-Tinyint (1) speichern werde, ob das Start- / Enddatum während der Sommerzeit eingegeben wurde, und mache dann eine Methode, um die Zeit um eine Stunde zu ändern, falls / falls notwendig.

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

(cake.php 2.4.x)




Links