void tzset()
1.0、参考
1.1、此函数的作用

根据TZ环境变量设置时区

1.2、说明

在调用此函数之前,必须先设置TZ环境变量的值。

#include <stdlib.h>
#include <time.h>

int main() {
    setenv("TZ", "Asia/Shanghai", 1);
    tzset();
    ...
    return 0;
}

TZ环境变量的值可以是Asia/ShanghaiGMT-8HongkongJapan等。

TZ环境变量的值可以设置为/usr/share/zoneinfo目录下的文件名

1.3、使用示例
#include <stdlib.h>
#include <time.h>
#include <locale.h>
#include <stdio.h>

int main() {
    setlocale(LC_ALL, "zh_CN.UTF-8");

    setenv("TZ", "Asia/Shanghai", 1);
    tzset();

    time_t tt = time(NULL);
    struct tm *tms = localtime(&tt);

    char buff[30] = {0};
    strftime(buff, sizeof(buff), "%Y-%m-%d %H:%M:%S %A", tms);

    printf("现在是上海时间:%s\n", buff);
    return 0;
}

使用cc命令编译 ⤵︎

cc -o test_time test.c

运行结果如下 ⤵︎

现在是上海时间:2019-03-18 18:06:05 星期一