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

2021-08-14 22:39:25 字數 1737 閱讀 9019

[cpp]view plain

copy

#include 

time_t

tmnow = time(null);  

tm*ptmnow = localtime(&tmnow);  

//從tm結構體中可以取到年月日時分秒等值。

這裡localtime返回了乙個tm指標,空間是由localtime自己控制的,所以如果

連續呼叫這個函式會有問題

。很多時候我們會同時處理兩個時間,例如表示時間段的【起始時間】【結束時間】,**如下:

[cpp]view plain

copy

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]view plain

copy

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函式需要注意的地方

在處理時間時用到了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中呼叫該函式,那麼獲得的時間就是帶時區的,這一點毫無疑問。而在一些嵌入式場合,我們也會面臨將時間戳轉換成...