반응형
gmtime_r(3)
#include <time.h>
struct tm *gmtime_r(const time_t *timep, struct tm *result);
gmtime_r(3)함수는 time_t type의 시간을 UTC(Coordinated Universal Time) 시간의 struct tm type으로 변환하는 함수입니다. time_t type은 주로 time(2)함수나 gettimeofday(2)의 struct timeval의 tv_sec에서 얻습니다. 함수이름은 gmtime_r(3)은 예전에는 UTC 대신에 국제표준시의 명칭이 GMT(Greenwich Mean Time)이었습니다. 시간 분기점은 영국 런던에 있는 그리니치 천문대를 기준으로 하기 때문에 GMT라고 하였으나, UTC로 변경되었습니다. 그러나 함수의 이름은 변경되지 않았습니다.
이 함수는 gmtime(3)함수와는 달리 multi-thread 환경에서도 문제가 없는 thread-safe함수입니다.
struct tm 구조체는 아래와 같은 구조입니다.
struct tm {
int tm_sec; /* 초: 0 ~ 59,(60,61윤초)*/
int tm_min; /* 분: 0 ~ 59*/
int tm_hour; /* 시: 0 ~ 23 */
int tm_mday; /* 일: 1 ~ 31 */
int tm_mon; /* 월: 0 ~ 11 (따라서 +1해야 함*/
int tm_year; /* 년: + 1900을 해야 함*/
int tm_wday; /* 요일: 0 ~ 6 */
int tm_yday; /* 1월1일부터 경과된 날수: 0 ~ 365 */
int tm_isdst; /* daylight적용여부: 0:적용안됨, -값:유효하지 않음 +값:적용시간*/
};
파라미터
timep
- 주로 time(2)함수의 return값이나 gettimeofday(2)의 struct timeval의 tv_sec 등으로
초 단위의 시간을 저장한 변수
result
- 변환된 데이터를 저장할 buffer.
RETURN
NULL 아님
- 정상적으로 변환이 되었으며 result pointer를 return합니다.
NULL
- 오류가 발생하였습니다.
활용 예제
Sample
#include <time.h>
#include <stdio.h>
int main(int argc, char **argv)
{
time_t t;
struct tm gt;
if((t = time(NULL)) == -1) {
perror("time() call error");
return -1;
}
if(gmtime_r(&t, >) == NULL) {
perror("gmtime_r() call error");
return -1;
}
printf("지금시간: %04d-%02d-%02d %02d:%02d:%02d\n",
gt.tm_year + 1900, gt.tm_mon + 1, gt.tm_mday,
gt.tm_hour, gt.tm_min, gt.tm_sec);
return 0;
}
see also : 시간 관련 함수
반응형
'C언어 header > time.h' 카테고리의 다른 글
ctime_r(3) - 초단위 시간을 문자열로 변환(thread-safe) (0) | 2019.09.30 |
---|---|
ctime(3) - 초단위 시간을 문자열로 변환 (0) | 2019.09.30 |
gmtime(3) - 초단위의 시간을 국제표준시(UTC) struct tm으로 변환 (0) | 2019.09.30 |
localtime_r(3) - 지역시간 struct tm 타입으로 변환(thread-safe) (0) | 2019.09.30 |
localtime(3) - 초단위 시간을 지역시간 struct tm 타입으로 변환 (0) | 2019.09.30 |