2014-09-28 104 views
2

在下面的代码中,我尝试显示时间戳值为“1411636989”的pdt和gmt格式,但它仅更改时区而不是日期,以下是样本output.Please帮我解决这个问题。根据时区更改时区而不是日期格式

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 
$$$$$$$$$$$$$$$$$$ 

回答

-1

由于time_t通常以秒表示使用普通算术增加价值my_time

if(putenv("TZ" = "GMT"))之前添加此行来增加时间GMT:

my_time += (7 * 60 * 60); 
1

你必须使用/ usr/share/zoneinfo中/目录下的匹配文件名时区之一。 PDT的TZ不会被识别。如果您的TZ变量无效,系统将回退到GMT。

将其设置为“US/Pacific”。

putenv("TZ=US/Pacific") 
+0

HI号,有没有什么办法让PDT作为识别的,为了某种目的,我读date命令的输出,并从它在一个特定的文件的时区值和所有的时间和日期将被转换为格式。日期中的时区显示为PDT,GMT,.... – user2972122 2014-09-28 14:51:26