Re: Zeitzonen
Dennis Stosberg <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
Am 21.02.2005 um 11:54 schrieb [email protected]: > Am 21.02.2005 12:39:32 schrieb Bernard.Bramlage: > > moin, > > ich versuche mit einem Programm in C, C++ oder Perl festzustellen welche > > Zeitzone mit YAST für das System festgelegt wurde. Ich habe z.B in YAST > > die Zeitzone Australia/Canberra ausgewählt. Ich nehme an, dass YAST dann > > die Datei /etc/localtime /usr/share/zoneinfo/Australia/Canberra nach > > /etc/localtime kopiert. Leider gibt das Kommando date dann als > > Zeitzonenkürzel EST heraus. Dies ist aber ein Kürzel für verschieden > > Zeitzonen, z.B. die Eastern Standard Time in den Vereinigten Staaten. In > > der Datei /etc/localtime finde ich auch keinen Hinweis, dass es sich um > > die Zeitzonen Australia/Canberra handelt. Hier bei mir ist /etc/localtime ein symbolischer Link auf /usr/share/zoneinfo/Europe/Berlin . > > Wie kann ich also nach der Einstellung mit YAST mit einem Programm > > feststellen welche Zeitzonen ausgewählt wurde. > > um festzustellen welche Zeitzone auf dem System eingestellt wurde, kann > man sich die Datei clock ansehen > Der Befehl "cat /etc/sysconfig/clock | grep ^TIMEZONE" liefert dann den > korrekten Eintrag Dein Weg mag für SuSE-Systeme funktionieren. Auf anderen Systemen muss /etc/sysconfig/clock nicht existieren oder kann ein anderes Format haben. Außerdem kann jeder Benutzer deines Systems durch die Umgebungsvariable $TZ angeben, in Zeiten welcher Zeitzone seine Programme Zeiten anzeigen sollen. Wenn dein Programm später nicht nur auf deinem SuSE-System laufen soll, dann schau dir mal die Manual pages zu localtime, gmtime und Konsorten an. Wenn dein Programm mit Zeitzonen arbeitet, solltest du (üblicher- weise) tunlichst _nicht_ versuchen, selber Zeiten umzurechnen, sondern die entsprechenden Bibliotheksfunktionen dafür benutzen. In Perl kannst du den Unterschied zu UTC mit "tz_local_offset()" im Modul "Time::Zone" abfragen. In C beispielsweise so: #include <time.h> extern long timezone; int main( ... ) { tzset(); printf("%d Sekunden westlich von Greenwich\n", timezone) } Gruß, Dennis -- Um die Liste abzubestellen, schicken Sie eine Mail an: [email protected] Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: [email protected]