我正在做一些代码,我需要知道系统中哪个时区是活动的(我正在使用Linux SO):
我的第一个方法是检查TZ
环境变量,除非我设置它(例如调用tzset)它是空的
之后我尝试extern long timezone
(time.h),但此变量始终为0.
最后我计算了我的时区和UTC + 0的差异,但我没有得到我的真实时区,因为我不知道夏令时是否适用
我很确定有一种简单(且最一致)的方法来实现这一目标。我正在寻找类似“欧洲/巴黎”或“UTC + 2”之类的东西
任何帮助将不胜感激!
答案 0 :(得分:3)
作为一个起点,我建议:
#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);
}
答案 1 :(得分:0)
date +%Z
命令显示当前时区,但您实际需要的是正确设置它。首先删除当前时区文件:
# rm -f /etc/localtime
然后为您的时区设置正确的:
# ln -s /usr/share/zoneinfo/<your-time-zone-here> /etc/localtime
执行ls /usr/share/zoneinfo/
查看可用的时区。对我而言/usr/share/zoneinfo/Europe/Amsterdam
。
然后使用上述date
命令进行验证。