Die POSIX-Möglichkeit, Zeitzoneninformationen zu verarbeiten, besteht offenbar darin, die Umgebungsvariable TZ zu setzen. Daher habe ich gewählt TZ mit dem Benutzer angegebene Zeitzone mit den Zeitfunktionen vor der Arbeit zu setzen:
/* Get actual time */
time(&now);
/* Backup time zone */
old_tz = getenv("TZ");
/* Set user time zone */
setenv("TZ", zone_s, 1);
/* Get time components in user timezone */
comptime = localtime(&now);
/* Set time */
sscanf(time_string, "%d:%d", &x, &y));
comptime->tm_hour = x;
comptime->tm_min = y;
comptime->tm_sec = 0;
/* Set date */
sscanf(date_string, "%d-%d-%d", &x, &y, &z);
comptime->tm_year = x-1900;
comptime->tm_mon = y-1;
comptime->tm_mday = z;
/* Restore time zone */
setenv("TZ", old_tz, 1);
Cheers,
Martin.
Das einzige Problem ist, dass Sie eine Datumszeit time_t haben müssen, um den Zeitunterschied zu erhalten. Es ist jedoch nicht möglich, eine Datetime-Zeichenfolge mit einem UTC-Offset zu analysieren - zumindest nicht mit POSIX, oder? –