2014-09-28 106 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