Установить время в соответствии с текущим часовым поясом
#include <time.h>void tzset( void );
libc
Функция tzset() устанавливает глобальные переменные daylight, timezone и tzname в соответствии со значением переменной окружения TZ
. Если TZ
не установлена, то переменные устанавливаются в значение строки конфигурации _CS_TIMEZONE
. В случае, если не установлены TZ
и _CS_TIMEZONE
, переменные устанавливаются в значение UTC0
.
После выполнения test() глобальные переменные могут иметь следующие значения:
TZ
. Время, устанавливаемое с помощью команды date, отражает время UTC. Для определения местного часового пояса используется переменная окружения TZ
.
#include <stdio.h>#include <stdlib.h>#include <time.h>void print_zone(){char *tz;printf( "TZ: %s\n", (tz = getenv( "TZ" )) ? tz : "default EST5EDT" );printf( " daylight: %d\n", daylight );printf( " timezone: %ld\n", timezone );printf( " time zone names: %s %s\n", tzname[0], tzname[1] );}int main( void ){tzset();print_zone();setenv( "TZ", "PST8PDT", 1 );tzset();print_zone();return (EXIT_SUCCESS);}
Код генерирует следующий вывод:
$ ./a.out TZ: default EST5EDT daylight: 1 timezone: 18000 time zone names: EST EDT TZ: PST8PDT daylight: 1 timezone: 28800 time zone names: PST PDT
POSIX 1003.1 X/Open Systems Interfaces Extension
ctime(), daylight, localtime(), localtime_r(), mktime(), strftime() timezone, tzname
Предыдущий раздел: Описание API системной библиотеки