phpbar.de logo

Mailinglisten-Archive

[php] Orstzeit (zum 2.)

[php] Orstzeit (zum 2.)

Uwe Renner urenner_(at)_r-plex.com
Fri, 13 Aug 1999 08:28:18 +0200


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