【기 능】 tm구조체 정보를 time_t 형식의 시간정보로 변환
【소 속】 time.h
#include <time.h>
【서 식】
time_t mktime(struct tm *tp);
【설 명】
tp의 어드레스에 들어있는 tm 구조체 데이터를 time_t시간으로 변환해서 돌려준다.
tm 구조체에 보존 되어 있는 값이 적철치 못한 경우에는 mktime함수내에서 수정한 후
돌려준다. (일부러 특정 값을 공백으로 만들면, 특정 값을 취득할 수 도 있다는).
【인 수】
struct tm *tp : tm 구조체 형식 시간 데이터
【리턴 값】
성공시 : 변환된 시각 정보
실패시 : (time_t)-1
구조체 tm은 time.h안에서 선언되어 있고 다음과 같은 구조를 가진다.
struct tm {
int tm_sec; /* 초 [0-61] 최대 2초까지 윤초를 고려 */
int tm_min; /* 분 [0-59] */
int tm_hour; /* 시 [0-23] */
int tm_mday; /* 일 [1-31] */
int tm_mon; /* 월 [0-11] 0부터 시작된다 */
int tm_year; /* 년 [1900년 부터의 경과년수] */
int tm_wday; /* 요일 [0:일 1:월 ... 6:토] */
int tm_yday; /* 년내의 연속번호 [0-365] 0부터 시작한다*/
int tm_isdst; /* 서머타임을 사용하지 않을때는 0 */
};
【사용 예】
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t timeinfo;
struct tm kt;
struct tm *rt;
char *wday[] = {"일","월","화","수","목","금","토"};
kt.tm_year = 124; /* 2024년 */
kt.tm_mon = 6; /* 7월 */
kt.tm_mday = 20; /* 20일 */
kt.tm_wday = 6; /* 토요일 */
kt.tm_hour = 14; /* 14시 */
kt.tm_min = 20; /* 20분 */
kt.tm_sec = 0; /* 00초 */
kt.tm_isdst= -1; /* 섬머타임 무효 */
/* tm 구조체의 데이터를 변환 */
timeinfo = mktime(&kt);
printf("취득 시간 : %ld\n", timeinfo);
/* 재변환 해서 확인 */
rt = localtime(&timeinfo);
printf("\n한국시간\n");
printf("년 : %d\n",rt->tm_year+1900);
printf("월 : %d\n",rt->tm_mon+1);
printf("일 : %d\n",rt->tm_mday);
printf("요일: %s\n",wday[rt->tm_wday]);
printf("시 : %d\n",rt->tm_hour);
printf("분 : %d\n",rt->tm_min);
printf("초 : %d\n",rt->tm_sec);
return 0;
}
【결 과】
취득 시간 : 1721452800
한국시간
년 : 2024
월 : 7
일 : 20
요일: 토
시 : 14
분 : 20
초 : 0