在處理時間時用到了localtime這個函式,將乙個utc時間轉為本地時間:
[cpp]
#include
time_t tmnow = time(null);
tm *ptmnow = localtime(&tmnow); //從tm結構體中可以取到年月日時分秒等值。
這裡localtime返回了乙個tm指標,空間是由localtime自己控制的,所以如果連續呼叫這個函式會有問題。
很多時候我們會同時處理兩個時間,例如表示時間段的【起始時間】【結束時間】,**如下:
[cpp]
time_t tmbegin = 1351118531; //2012-10-25 06:42:11
time_t tmend = 1351218731; //2012-10-26 10:32:11
tm* ptmbegin = localtime(&tmbegin );
tm* ptmend = localtime(&tmend );//第二次呼叫會修改上次呼叫的tm結構體,若上次的資料未儲存則會丟失
//tm* ptm3 = gmtime(&tmend ); //效果同上條語句,也會重寫之前的資料
char ctmbegin1[26], ctmend[26];
strftime(ctmbegin, 26, "%y%m%d%h%m%s", ptmbegin); //這裡輸出的將是tmend的時間值
strftime(ctmend, 26, "%y%m%d%h%m%s", ptmend);
/*msdn中有相關說明:
both the 32-bit and 64-bit versions ofgmtime, mktime, mkgmtime, and localtimeall
use a single tm structure per thread for the conversion. each call to one of these
routines destroys the result of the previous call.
*/ 所以要記住,一旦呼叫了localtime函式,應該馬上取出tm結構中的內容:
[cpp]
time_t tmbegin = 1351118531; //2012-10-25 06:42:11
time_t tmend = 1351218731; //2012-10-26 10:32:11
char ctmbegin1[26], ctmend[26];
tm* ptmbegin = localtime(&tmbegin );
strftime(ctmbegin, 26, "%y%m%d%h%m%s", ptmbegin);
tm* ptmend = localtime(&tmend );
strftime(ctmend, 26, "%y%m%d%h%m%s", ptmend);
//tm* ptm3 = gmtime(&tmend );
C 使用localtime函式需要注意的地方
cpp include time t tmnow time null tm ptmnow localtime tmnow 從tm結構體中可以取到年月日時分秒等值。這裡localtime返回了乙個tm指標,空間是由localtime自己控制的,所以如果連續呼叫這個函式會有問題。很多時候我們會同時處理兩...
C 使用localtime函式需要注意的地方
cpp view plain copy include time t tmnow time null tm ptmnow localtime tmnow 從tm結構體中可以取到年月日時分秒等值。這裡localtime返回了乙個tm指標,空間是由localtime自己控制的,所以如果 連續呼叫這個函式...
localtime函式在不同平台使用注意
1.寫在前面 localtime函式是c語言標準庫中時間庫 time.h 中獲取系統帶時區時間的函式,獲得的時間最終以 strcut tm 的格式輸出。對於通用作業系統如windows linux中呼叫該函式,那麼獲得的時間就是帶時區的,這一點毫無疑問。而在一些嵌入式場合,我們也會面臨將時間戳轉換成...