在下面的代码中,我试图显示epoch时间值“1411636989”的pdt和gmt格式,但它只更改时区而不更改日期,下面是示例输出。
int main()
{
time_t my_time = 1411636989;
if (putenv("TZ=PDT"))
printf("Current time zone = %s###########\n", getenv("TZ"));
else {
printf("Time zone = %s###########\n", getenv("TZ"));
printf("PDT 1411636989 = %s$$$$$$$$$$$$$$$$$$\n", asctime(localtime(&my_time)));
}
if (putenv("TZ=GMT"))
printf("putenv failed errno = %d##########\n",errno);
else {
printf("New time zone = %s###########\n", getenv("TZ"));
printf("GMT 1411636989 = %s$$$$$$$$$$$$$$$$$$\n", asctime(localtime(&my_time)));
}
return 0;
}
Sample O/P:
Time zone = PDT###########
PDT 1411636989 = Thu Sep 25 09:23:09 2014
$$$$$$$$$$$$$$$$$$
New time zone = GMT###########
GMT 1411636989 = Thu Sep 25 09:23:09 2014
$$$$$$$$$$$$$$$$$$
最佳答案
您必须使用与/usr/share/zoneinfo/目录下的文件名匹配的时区之一。PDT的TZ不会被识别。如果TZ变量无效,系统将返回GMT。
设置为“美国/太平洋”。
putenv("TZ=US/Pacific")
关于c - 更改时区而不更改时区的日期格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26085388/