'gmtime'에 해당되는 글 2건

  1. 2016.12.14 시간 관련 C 함수 비교
  2. 2016.12.14 localtime() 과 gmtime() 사용 시 주의
카테고리 없음2016. 12. 14. 14:39

time_t time(  
   time_t *timer   
);  

시스템 시간을 Unix time 으로 반환 (time_t)


struct tm *localtime(  
   const time_t *timer
); 

Unix time (time_t) 을 년월일 시분초 형식의 구조체 (struct tm) 으로 변환.
이 때 Local time 으로 변환함.


struct tm *gmtime(    
 const time_t *timer   
); 

Unix time (time_t) 을 년월일 시분초 형식의 구조체(struct tm) 으로 변환.
이 때 UTC (=GMT) 으로 변환함.


time_t mktime(
  
   struct tm *timeptr   
);  

년월일 시분초 형식의 구조체(struct tm)를 Unix time (time_t) 으로 변환함.
이 때 struct tm의 값은 Local time 으로 간주함.


Unix time ( = POSIX time, Epoch time)

1970년 1월 1일 00:00:00 협정 세계시(UTC) 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것



Posted by 좋은나무
카테고리 없음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


Posted by 좋은나무