2011-11-25 117 views
2

gmtime()localtime()有什麼區別? 我的需求: 我需要根據我所在的時區顯示時間。 我有一段時間在POSIX(UTC)格式在幾秒鐘內。我有時區偏移(在UTC和我目前的地方之間)以秒爲單位。 我要麼加或減時區偏移量。 之後,我仍然有POSIX格式的時間。 爲了將其轉換爲人類時間,我應該使用gmtime()還是localtime()。這是因爲我也需要日期。 請說明。 謝謝!基於C++時區的時間

回答

0

gmtime是UTC —協調世界時。它始終是 相同,無處不在。 localtime是當地時間的解釋, 由時區確定,以及夏令時是否生效或者是否爲 。時區將由環境變量TZ, 確定,用戶應該將其設置爲當地時區;如果未設置此變量 ,則會使用已定義的實施默認值:通常是機器所在的時區 。

1

您不應該自己提供時區偏移量,而應該通過環境提供實時時區指定。然後,localtime會給你本地化的時間。 (gmtime總是給你UTC)。假設你的代碼看起來像

struct tm time_buffer, *localtime; 
localtime = localtime_r(timep, &time_buffer); 
printf("The hour is %i\n", localtime->tm_hour); 

,然後調用通過程序:

$ TZ=Europe/Berlin my-program 

,並得到柏林的地方時,正確調整爲夏令時。

如果您絕對需要自己提供時區,請閱讀man tzset