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. Wie kann ich also nach der Einstellung mit YAST mit einem Programm feststellen welche Zeitzonen ausgewählt wurde? Gruß Bernard
moin, manchmal muss man nur lange genug suchen 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. 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 Vielleicht gibts ja auch noch andere Lösungen. Gruß Bernard
Am 21.02.2005 um 11:54 schrieb Bernard.Bramlage@kisters.de:
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
participants (2)
-
Bernard.Bramlage@kisters.de
-
Dennis Stosberg