我正在编写一些代码,我需要知道系统中哪个时区处于事件状态(我在 Linux SO 上工作):
我的第一个方法是检查
TZ
环境变量,它是空的,除非我设置它(例如调用 tzset)之后,我尝试使用
extern long timezone
(time.h),但此变量始终为 0。最后我计算了我的时区和 UTC+0 的时差,但我没有得到我的真实时区,因为我不知道是否适用夏令时
我很确定有一种简单(且最一致)的方法可以实现这一点。我正在寻找类似“Europe/Paris”或“UTC+2”之类的东西
任何帮助将不胜感激!
最佳答案
作为起点,我建议这样做:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char str[64];
time_t timer;
struct tm * ptm;
timer = time(NULL);
ptm = localtime(&timer);
strftime(str, sizeof(str), "%Z", ptm);
printf("TZ: %s\n", str);
return(0);
}
关于c - 如何知道系统正在使用哪个时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40526927/