본문 바로가기
프로그래밍/리눅스

[C언어] 시간 차이 구하는 방법 - difftime 간단 예제

by 앗싸붕 2020. 11. 16.
728x90
반응형

 

시간 차이 구하는 간단 예제

사용하는 API 는 아래와 같습니다.

 

difftime()

double difftime(time_t time2, time_t time1);
 - 인자로 받은 두 시간의 차이를 구해 return한다.

 

mktime()

time_t mktime(struct tm* timeptr);
 - 인자로 받은 tm struct 를 time_t 형으로 변환한다.

 

strftime() - debug print 용으로 사용.

size_t strftime(char *s, size_t maxsize, const char *format,  const struct tm * timeptr);
 - tm struct 로 포맷화 된 문자열을 만드는 함수.

[C언어] time 사용법 - 시간 출력 포맷, 시간 / 문자열 변환

 

 

간단 예제

 

#include <stdio.h>
#include <time.h>
void print_date (double diff_time)
{
        int t_day, t_hour, t_min, t_sec;
        t_day = diff_time / (60*60*24);
        diff_time = diff_time - (t_day*60*60*24);

        t_hour = diff_time / (60*60);
        diff_time = diff_time - (t_hour*60*60);

        t_min = diff_time / (60);

        diff_time = diff_time - (t_min*60);

 

        t_sec = diff_time;

        printf ("time1과 time2 는 %d일 %d시 %d분 %d초차이가 납니다.\n", t_day, t_hour, t_min, t_sec);

}

 

void main ()

{

        time_t time1;

        time_t time2;

 

        const char* str_date1 = "2020-03-21";

        const char* str_time1 = "10:31:44";

        //const char* str_date2 = "2019-10-21";

        //const char* str_time2 = "18:16:24";

        const char* str_date2 = "2020-03-21";

        const char* str_time2 = "10:30:44";

 

        //char ret[256];

        char *ret = NULL;

        char buf[256];

        struct tm t;

        double diff_time;

 

        // time1 생성

        memset (&t, 0, sizeof(t));

        strptime(str_date1, "%Y-%m-%d", &t);

        strptime(str_time1, "%H:%M:%S", &t);

        time1 = mktime(&t);

        strftime(buf, sizeof(buf), "%Y년 %m월 %d일 %H:%M:%S", &t);

        printf ("time1: %s\n", buf);

 

        // time2 생성

        memset (&t, 0, sizeof(t));

        strptime(str_date2, "%Y-%m-%d", &t);

        strptime(str_time2, "%H:%M:%S", &t);

        time2 = mktime(&t);

        memset (&buf, 0, sizeof(buf));

        strftime(buf, sizeof(buf), "%Y년 %m월 %d일 %H:%M:%S", &t);

        printf ("time2: %s\n", buf);

 

        // time1 과 time2 차이

        diff_time = difftime(time1, time2);

        printf ("diff_time: %d\n", diff_time);


        // 시간 차이 출력

        print_date (diff_time);

}

 

- 출력 결과

[jungfo time] ./a.out 

time1: 2020년 03월 21일 10:31:44

time2: 2020년 03월 21일 10:30:44

diff_time: 1584754244

time1과 time2 는 0일 0시 1분 0초차이가 납니다.

 

728x90
반응형

댓글