2013-08-19 60 views
-2

我使用Ubuntu 10.04並設置系統時區「歐洲/倫敦」。 我想以上面的格式設置系統時區而不是「IST,EST等」。無論如何,我可以用我們設置爲「歐洲/倫敦」的相同格式獲取時區字符串。如何查找當前系統時區

上面的鏈接給出了重複,但實際上它不回答我的問題。在發佈這個問題之前,我檢查了上面的鏈接。

請建議。

在此先感謝。

+0

看看這個:http://www.boost.org/doc/libs/1_54_0/doc/html/date_time.html但我不確定是否有這樣的事情。 – Dino

+1

請參閱[如何查找當前系統時區?](http://stackoverflow.com/questions/3118582/how-do-i-find-the-current-system-timezone?rq=1) – elmov

+0

感謝您的更新。我檢查了上述鏈接,但在鏈接中沒有找到合適的解決方案,我發現那是爲什麼我第二次問這個問題。有沒有人有任何想法,請分享它。 –

回答

0

time.h定義一個函數來檢索系統時區,並將其保存在兩個字符串變量:

#include <stdlib.h> 
#include <stdio.h> 
#include <time.h> 

int main() { 
    char * TZ = getenv("TZ"); 
    if (TZ) 
     printf("TZ: %s\n", TZ); 
    tzset(); 
    printf("Timezone: %s/%s\n", tzname[0], tzname[1]); 
    printf("GMT %s%ld\n", timezone >= 0 ? "+" : "", timezone); 
    printf("DST %s\n", daylight ? "ON" : "OFF"); 
} 

請注意,在某些系統(如Linux)的這個函數獲取它從TZ環境變量的信息。如果未設置,則會給出近似值或變量保持未初始化狀態。

在我的OS X上,這個信息似乎來自其他地方。

+0

我跑你的程序,它給了我這個。 amrith @ amrith-VBOX:〜/所以$ ./tz 區:EST/EDT GMT 18000 DST ON amrith @ amrith-VBOX:〜/所以$ 沒有什麼要求的問題,我不不要以爲... – amrith

+0

是的上面的程序不會給出要求的輸出。產量應該像「亞洲/加爾各答」或「歐洲/倫敦」一樣排列。 –

-1

爲什麼不只是貓/ etc/timezone?

[email protected]:~/so$ more /etc/timezone 
America/New_York 
+0

謝謝。因爲我知道所有類型的Linux操作系統(Red Hat,Fedora,cent os,ubuntu等)都不存在/ etc/timezone,所以我認爲它不是通用的解決方案。 –

+0

真的嗎?我應該提醒你,你的問題是:「我正在使用Ubuntu 10.04和...」。 – amrith