카테고리 없음

localtime() 과 gmtime() 사용 시 주의

좋은나무 2016. 12. 14. 11:52

localtime 과 gmtime 함수는 모두 struct tm * 를 반환하는데,

이 때 각 함수 호출 시 서로 반환된 struct tm * 의 값을 변경하므로 주의 해야 한다.

예) 

[테스트 코드]

time_t local_time;
time ( &local_time );

struct tm *local_tm = localtime(&local_time);

// local_tm: 2016-12-14 11:33:8

struct tm *utc_tm = gmtime(&local_time); 

// utc_tm: 2016-12-14 2:33:8
// local_tm: 2016-12-14 2:33:8 // 내부적으로 같은 정보를 가르키고 있어서, 값이 함께 바뀜

DebugLog("local_tm: %d-%d-%d %d:%d:%d\n", 
local_tm->tm_year + 1900, 
local_tm->tm_mon +1, 
local_tm->tm_mday, 
local_tm->tm_hour, 
local_tm->tm_min, 
local_tm->tm_sec);

DebugLog("utc_tm: %d-%d-%d %d:%d:%d\n",
utc_tm->tm_year + 1900,
utc_tm->tm_mon +1,
utc_tm->tm_mday,
utc_tm->tm_hour,
utc_tm->tm_min,
utc_tm->tm_sec);


[결과]

local_tm: 2016-12-14 2:33:8
utc_tm: 2016-12-14 2:33:8