Mailinglisten-Archive |
Hallo Tobias, hallo Liste, > Insgesamt gibt es auf einem RH6-System (bei Suse oder einer anderen > aktuellen Linux-Distro dürfte es nicht anders sein) 432 verschiedene > Zeitzonen in /usr/share/zoneinfo (das Arthur Olson Timezone System). Da > es wenig sinnvoll ist, den User vor die Aufgabe zu stellen, aus über 400 > Zonen seine herauszufinden, wird man versuchen, diese Liste > einzuschränken. Schaut man sich zwei Zeitpunkte innerhalb eines Jahres > an (einmal Winterzeit, z.b. Januar, einmal Sommerzeit, Juli), sieht man, > daß es 68 Zonen gibt, die effektiv verschiedene Zeiten haben. Z.B. ist > die Zone Asia/Kabul die einzige Zone in der Region GMT+4, GMT+1 umfasst > aber mehrere Zonen, (Europe/Berlin, Europe/Zurich, usw.). Natürlich hat > es einen Sinn, daß es 432 unterschiedliche Zonen gibt und nicht nur 68: > Man sollte also in der Applikation dem User auf jeden Fall die > Möglichkeit geben, alle 432 Zonen zu sehen. bei mir (Delix) unter /usr/lib/zoneinfo, aber den locate-Befehl beherrsche ich immerhin inzwischen ;-) Danke für die unix-Nachhilfe! > Die 432 Zonen sowie die 68 "unique" Zonen findest Du in einem > gebrauchsfertigen Array unter > http://phpwizard.net/phpMisc/scripts/pretty/timezones.php3 Super, gucke ich mir gleich nachher an! Mein Problem sind ja weniger die vielen internationalen Anwender als eher mein Server in USA. Der setzt eine völlig krumme Ortszeit ein. Mit gmmktime natürlich umgehbar. Jetzt also noch die Darstellung in "unserer" gerade aktuellen Darstellung (MEZ mit/ohne Ortszeit). > Die Umrechnung von einer Zeitzone zur anderen ist mit den > Timezone-Files aus /usr/share/zoneinfo zumindest unter Unix simpel: > > Die aktuelle Zeitzone wird über die Umgebungsvariable "TZ" festgelegt. > PHP-Datums- und Zeit-Funktionen wie date() rechnen in dieser Zeitzone. > Tadaaa... das ist die Lösung: Man ändere einfach kurzfristig (und nur > für das aktuelle Script) die Zeitzone: > > PutEnv("TZ=America/New_York"); // In die Zeitzone des Benutzers > wechseln echo date("d.m.Y", $row["time_gmt"]); // Formatiertes Datum > ausgeben PutEnv("TZ=/etc/localtime"); // Lokale Zeitzone > wiederherstellen Das klingt gut. Leider gibt es bei mir TZ nicht. Setzen nützt auch nichts. Zeit kommt immer gleich. Genauer: dieses Skript: #----------------- echo "<p>TZ: " . getenv("TZ"); echo "<p>A) " . date("H:i:s d.m.Y", gmmktime()); # Formatiertes Datum ausgeben putenv("TZ=America/New_York"); # In die Zeitzone des Benutzers wechseln echo "<p>TZ: " . getenv("TZ"); echo "<p>B) " . date("H:i:s d.m.Y", gmmktime()); # Formatiertes Datum ausgeben putenv("TZ=/usr/lib/zoneinfo/localtime"); echo "<p>TZ: " . getenv("TZ"); echo "<p>C) " . date("H:i:s d.m.Y", gmmktime()); # Formatiertes Datum ausgeben #----------------- bringt diesen Output: TZ: A) 06:25:41 13.08.1999 TZ: America/New_York B) 06:25:41 13.08.1999 TZ: /usr/lib/zoneinfo/localtime C) 06:25:41 13.08.1999 Wo liegt mein Problem? - Uwe ___________________________________________________ Uwe Renner <urenner_(at)_r-plex.com> r-plex GmbH, http://www.r-plex.com Danziger Str. 14 71093 Weil im Schönbuch Tel. 07157-520820 Fax 07157-520821 HRB Böblingen 4599
php::bar PHP Wiki - Listenarchive