Baba: Zeitzone wählen für Benutzer

Beitrag lesen

Ich speichere an vielen Stellen Uhrzeiten und Daten als UNIX-timestamp, die für jeden Nutzer differenziert angezeigt werden sollen. Dazu möchte ich in meiner Benutzerdatenbank ein Feld "timezone" anlegen. Weiß nicht genau, wie ich das machen soll.

Festellung: time() ist von der in php eingestellten Zeitzone unabhängig. Anders als hier auf den ersten Blick ersichtlich :) ["used by all date/time functions (...)"]

Möglichkeit 1)
ich nehme eine solche Liste und speichere in der DB einen Wert wie 0, 3, -5. Dann addiere oder subtrahiere ich von auszugebenden Daten/Uhrzeiten 60*60*$userdata["timezone"] oder sowas.
Nachteil: seine Sommerzeit muss der User von Hand angeben...

Möglichkeit 2)
ich setze für jeden User mittels date_timezone_set() die Zeitzone und gebe dann wie gewohnt mittels date() formatiert Daten aus. Dann muss ich die ganzen Strings für den Funktionsparameter von date_timezone_set() kennen (allein für Europa sind das 58) und a) in eine ähnliche Liste schreiben, wie oben verlinkt oder b) eine Zurodnung von Abweichungen zur UTC zu Strings schreiben. Ich könnte mir aber vorstellen, es gibt so Gemeinheiten, dass in einer Zone, wo zum Zeitpunkt X die Uhrzeiten in allen Ländern gleich sind, zum Zeitpunkt Y wegen Sommerzeit in einem Land aber eine abweichende Uhrzeit herscht. Daher wäre ein Liste mit UTC+1, UTC+2, etc, wie verlinkt, nicht möglich.

Möglichkeit 3)
wie geht es vielleicht noch einfacher?

Gernerelle Fragen

  1. Ich dachte immer, meine php-Konfiguration weiß UTC+1 oder sowas. Aber jetzt macht sie es ja gerade richtig mit UTC+2, da Sommerzeit. Woher weiß php, wann auf Sommerzeit umgestellt wird? Kann man daraus einen Algorithmus machen, den php kennt?
  2. Ist das der Grund warum man  mit Strings arbeitet ("Europe/Berlin") statt mit UTC+2?

Cheers,
Baba