我已经使用dpkg-reconfigure tzdata
从 UTC+2 到 UTC+0 的 Ubuntu 时区进行了更改,但运行 C 代码 gettimeofday()即使在重新启动后仍然显示tz_minuteswest
并且在以前的时区中。tv_sec
只有在 gettimeofday() 开始显示 UTC+0 时间后运行下面的 C代码:
#include <stdlib.h>
#include <stdio.h>
#include <sys/time.h>
int main()
{
struct timeval tv;
struct timezone tz;
setenv("TZ", "UTC", 1);
tzset();
gettimeofday(&tv, &tz);
tv.tv_sec -= 7200;
tz.tz_minuteswest = 0;
settimeofday(&tv, &tz);
gettimeofday(&tv, &tz);
printf("time: %llu, offset: %d\n",
(long long unsigned)tv.tv_sec, tz.tz_minuteswest);
}
是否有某种 gcc/libc 独立的时区配置?如何从 shell 更改整个系统的时区?
谢谢你。