본문으로 바로가기

바다야크

  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 날짜와 시간 지정으로 날짜와 시간 정수 값 구하기 함수 mktime()

C언어 날짜와 시간 지정으로 날짜와 시간 정수 값 구하기 함수 mktime()

· 댓글개 · 바다야크

C함수 날짜와 시간 지정으로 날짜와 시간 정수 값 구하기 mktime()

struct tm 값으로 time_t 형 시간 값을 구합니다. 즉, 프로그래머가 원하는 시간의 time_t 값을 구합니다. struct tm의 구조는 아래와 같습니다.

  • 헤더: time.h
  • 형태: time_t mktime(struct tm *timeptr)
  • 인수: struct tm *timeptr time_t 값을 구하기 위한 struct tm 값
  • 반환: time_t struct tm 값으로 구해진 시간 정수 값

struct tm

struct tm
{
  int tm_sec;            /* Seconds.    [0-60] (1 leap second) */
  int tm_min;            /* Minutes.    [0-59] */
  int tm_hour;           /* Hours.    [0-23] */
  int tm_mday;           /* Day.        [1-31] */
  int tm_mon;            /* Month.    [0-11] */
  int tm_year;           /* Year    - 1900.  */
  int tm_wday;           /* Day of week.    [0-6] */
  int tm_yday;           /* Days in year.[0-365]    */
  int tm_isdst;          /* DST.        [-1/0/1]*/

#ifdef    __USE_BSD
  long int tm_gmtoff;           /* Seconds east of UTC.  */
  __const char *tm_zone;        /* Timezone abbreviation.  */
#else
  long int __tm_gmtoff;         /* Seconds east of UTC.  */
  __const char *__tm_zone;      /* Timezone abbreviation.  */
#endif
};

C언어 mktime() 함수 예제

#include <stdio.h>
#include <time.h>

int main( void)
{
   char      *week[] = { "일", "월", "화", "수", "목", "금", "토"};
   time_t     user_time;
   struct tm  user_stime;
   struct tm *ptr_stime;

   user_stime.tm_year   = 2007   -1900;   // 주의 :년도는 1900년부터 시작
   user_stime.tm_mon    = 7      -1;      // 주의 :월은 0부터 시작
   user_stime.tm_mday   = 25;
   user_stime.tm_hour   = 10;
   user_stime.tm_min    = 12;
   user_stime.tm_sec    = 55;
   user_stime.tm_isdst  = 0;           // 썸머 타임 사용 안함

   user_time   = mktime( &user_stime);
   ptr_stime = localtime( &user_time);

   printf( "%4d 년\n"        , ptr_stime->tm_year +1900);
   printf( "  %2d 월(0-11)\n", ptr_stime->tm_mon  +1   );
   printf( "  %2d 일(1-31)\n", ptr_stime->tm_mday      );
   printf( "%s요일\n"        , week[ptr_stime->tm_wday]);
   printf( "  %2d 시(0-23)\n", ptr_stime->tm_hour      );
   printf( "  %2d 분(0-59)\n", ptr_stime->tm_min       );
   printf( "  %2d 초(0-59)\n", ptr_stime->tm_sec       );
   printf( "1월 1일 이후의 날짜 수: %3d \n", ptr_stime->tm_yday);
   if      ( 0 <  ptr_stime->tm_isdst)    printf( "썸머 타임 사용\n"     );
   else if ( 0 == ptr_stime->tm_isdst)    printf( "썸머 타임 사용 안함\n");
   else                                   printf( "썸머 타임 사용 불가\n");

   return 0;
}

C언어 mktime() 예제 실행 결과

]$ ./a.out
2007 년
   7 월(0-11)
  25 일(1-31)
수요일
  10 시(0-23)
  12 분(0-59)
  55 초(0-59)
1월 1일 이후의 날짜 수: 205
썸머 타임 사용 안함
]$
SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.