Codeigniter, timezone_menu und date_default_timezone_set
Nutze ich Codeigniters timezone_menu
gibt eine drop-down-box Zeitzonen von Zeit und ich Frage mich, wie sollen wir nutzen diese Zeitzonen mit PHPs date_default_timezone_set
?
Beispiel codeigniters Zeitzone UP1
. Allerdings können Sie nicht verwenden, dass mit PHPs date_default_timezone_set
als string nimmt, sollte so etwas wie Europe/Berlin
Die Frage ist, gibt es einen Weg, um zu konvertieren eine codeigniter-timezone-string an ein PHP-eine, die akzeptiert werden können, durch die date_default_timezone_set
?
- die Frage ist, warum tut codeigniter Datum Helfer geben, die Reihe von Werten, wenn Sie keine Verwendung in den dafür vorgesehenen Kontext?
- Laut dem doc, Codeigniter nicht vorschlagen, um die
date_default_timezone_set()
. Und genau das ist mein problem. Ich denke, es ist besser zu wählen Sie zwischen php-native date-Funktionen oder Codeigniter. Ich bin dabei, meine Entscheidung (und ich verwendet hatte Codeigniter ist bis jetzt)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgendes funktioniert bei mir:
BEARBEITEN
Die ursprüngliche Funktion nicht ausschließen, DST-offsets. timezone_abbreviations_list() Listen 2x für eine Zeitzone DST hat mit "true" markiert, zum Beispiel Tasmanien, erscheint unter +11 und +10. Also, wenn Sommerzeit == TRUE, ignorieren Sie es als Teil der return-Liste.
Einige Beispiele:
timezone_abbreviations_list
irgendwie?timezone_abbreviations_list
gespeichert zweimal für Zeitzonen, die Sommerzeit.Können Sie den UTC-offset für eine der
U(M|P)x
-Werte mittimezones()
.Ab diesem Punkt, ich denke, der einzige Weg ist, eine Art benutzerdefinierte Zuordnung zwischen dem Versatz und der PHP-timezone. Könnten Sie
Etc/GMT(+|-)x
Zeitzonen, aber das problem bei denen wird sein, dass Sie enthalten keine Sommerzeit-Umstellung Informationen.Das problem im Allgemeinen ist, dass die UTC-offsets tatsächlich die Karte, um eine Menge von verschiedenen Zeitzonen, z.B.
UP1
((UTC + 1:00) Berlin, Brüssel, Kopenhagen, Madrid, Paris, Rom) Karten zuEurope/Berlin
,Europe/Brussels
,Europe/Copenhagen
,Europe/Madrid
,Europe/Paris
,Europe/Rome
aber auchAfrica/Luanda
zum Beispiel. Die Sache bekommt nun beliebig Komplex aufgrund der DST-übergänge, die kann oder kann nicht auftreten, in einigen dieser Zeitzonen.Wenn Sie nicht brauchen, die DST-Sache, eine Zuordnung zwischen den Rückgabewert der
timezones()
Funktion und dieEtc/GMT(+|-)x
Zeitzonen sollte OK sein, sonst kann man die Codeigniter Zeitzone handling bei allen, weil die Zuordnung ist nicht eindeutig.timezone_name_from_abbr
. Es hat auch Unterstützung für die Sommerzeit! Ich denke, dass diese dann möglicherweise die richtige Verwendungtimezone_name_from_abbr('', $offset * 3600, true)
- was tun Sie denken - es scheint für mich arbeiten?timezone_name_from_abbr()
Funktion bis jetzt, aber das scheint eine praktikable Lösung.Codeigniter gibt die Zeitzone Referenz zurück, die verwendet werden können, mit Zeitzonen (), um die Zeit diff und aus Ihr können Sie berechnen die Zeit.
Können Sie den Wert der Zeitzone offset in der gmt_to_local() Funktion beispielsweise: