본문 바로가기
C/C Library

mktime

by memora 2024. 7. 24.

Index로 돌아가기

 

 【기  능】 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

 

Index로 돌아가기

반응형

'C > C Library' 카테고리의 다른 글

clearerr  (0) 2024.07.27
time  (0) 2024.07.25
localtime  (3) 2024.07.23
gmtime  (4) 2024.07.22
difftime  (1) 2024.07.21