Herakles
Profifragensteller
Moin!
Ich möchte gern, dass in einem C-Programm die aktuelle Zeit für - sagen wir New York ausgegeben wird. Machbar sollte sowas mittels der "broken-down time"-Funktionen unterhalb von ctime(3) sein.
Sehr schön zu sehen ist zum Beispiel, wie das System zwischen der UTC und unsere lokalen (aktuell) Sommerzeit unterscheidet. Hier mal ein kleines Beispiel:
Dieser kleine Code wirft die aktuelle Stundenanzahl nach UTC und danach nach MESZ aus:
Es ist also gerade "7 Uhr irgendwas" in England und "9 Uhr irgendwas" in Deutschland.
Jetzt möchte ich aber gern die aktuelle Zeit für - na, sagen wir New York haben. Das liegt in der Zeitzone "EST" oder aber im Sommer in "EDT". Dafür gibt es in tzset(3) Funktionalitäten und Felder, die das berücksichtigen und dann dementsprechend die Ausgabe der ctime(3)-Funktionen ändern sollten.
ALLERDINGS: Ich bekomme es nicht hin, die Zeitzone zu ändern. Wenn ich beispielsweise mein Programm vor dem Aufruf von localtime(3) dahingehend ändere, dass ich die Zeitzoneninformationen wie in tzset(3) gewünscht ändere, dann kommt dennoch dasselbe Ergebnis heraus:
Ich suche seit einer halben Stunde in den manpages und im Internet, bekomme es aber nicht hin.
Kann mir jemand einen Schubs in die richtige Richtung geben?
Viele Grüße und Dank im Voraus!
Herakles
Ich möchte gern, dass in einem C-Programm die aktuelle Zeit für - sagen wir New York ausgegeben wird. Machbar sollte sowas mittels der "broken-down time"-Funktionen unterhalb von ctime(3) sein.
Sehr schön zu sehen ist zum Beispiel, wie das System zwischen der UTC und unsere lokalen (aktuell) Sommerzeit unterscheidet. Hier mal ein kleines Beispiel:
Code:
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
int main(void) {
struct tm actual_time, *Ptime;
time_t actual_time__s = 0;
time( &actual_time__s );
Ptime = gmtime(&actual_time__s);
memcpy( &actual_time, Ptime, sizeof(struct tm) );
printf("%d\n",actual_time.tm_hour);
Ptime = localtime(&actual_time__s);
memcpy( &actual_time, Ptime, sizeof(struct tm) );
printf("%d\n",actual_time.tm_hour);
return 0;
}
Dieser kleine Code wirft die aktuelle Stundenanzahl nach UTC und danach nach MESZ aus:
Code:
7
9
Es ist also gerade "7 Uhr irgendwas" in England und "9 Uhr irgendwas" in Deutschland.
Jetzt möchte ich aber gern die aktuelle Zeit für - na, sagen wir New York haben. Das liegt in der Zeitzone "EST" oder aber im Sommer in "EDT". Dafür gibt es in tzset(3) Funktionalitäten und Felder, die das berücksichtigen und dann dementsprechend die Ausgabe der ctime(3)-Funktionen ändern sollten.
ALLERDINGS: Ich bekomme es nicht hin, die Zeitzone zu ändern. Wenn ich beispielsweise mein Programm vor dem Aufruf von localtime(3) dahingehend ändere, dass ich die Zeitzoneninformationen wie in tzset(3) gewünscht ändere, dann kommt dennoch dasselbe Ergebnis heraus:
Code:
(...)
tzname[0] = "EST";
tzname[1] = "EDT";
Ptime = localtime(&actual_time__s);
(...)
Ich suche seit einer halben Stunde in den manpages und im Internet, bekomme es aber nicht hin.
Kann mir jemand einen Schubs in die richtige Richtung geben?
Viele Grüße und Dank im Voraus!
Herakles