Способ обработки информации о часовом поясе в POSIX, по-видимому, заключается в установке переменной среды TZ . Поэтому я решил установить TZ с указанным пользователем часовым поясом, прежде чем работать с функциями времени:
/* 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 );
Приветствия
Martin.