C 使用localtime函式需要注意的地方

2021-07-05 23:20:29 字數 1383 閱讀 7761

[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);

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 view plain copy include time t tmnow time null tm ptmnow localtime tmnow 從tm結構體中可以取到年月日時分秒等值。這裡localtime返回了乙個tm指標,空間是由localtime自己控制的,所以如果 連續呼叫這個函式...

C 使用localtime函式需要注意的地方

在處理時間時用到了localtime這個函式,將乙個utc時間轉為本地時間 cpp include time t tmnow time null tm ptmnow localtime tmnow 從tm結構體中可以取到年月日時分秒等值。這裡localtime返回了乙個tm指標,空間是由localt...

localtime函式在不同平台使用注意

1.寫在前面 localtime函式是c語言標準庫中時間庫 time.h 中獲取系統帶時區時間的函式,獲得的時間最終以 strcut tm 的格式輸出。對於通用作業系統如windows linux中呼叫該函式,那麼獲得的時間就是帶時區的,這一點毫無疑問。而在一些嵌入式場合,我們也會面臨將時間戳轉換成...