在下面的代码中,我尝试显示纪元时间值" 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
$$$$$$$$$$$$$$$$$$
答案 0 :(得分:1)
您必须使用与/ usr / share / zoneinfo /目录下的文件名匹配的时区之一。 PDT的TZ不会被识别。如果您的TZ变量无效,系统将回退到GMT。
将其设为“美国/太平洋”。
putenv("TZ=US/Pacific")
答案 1 :(得分:-1)
由于time_t
通常以秒为单位表示,因此请使用常规算法将值添加到my_time
。
在if(putenv("TZ" = "GMT"))
之前添加此行以增加GMT的时间:
my_time += (7 * 60 * 60);