[C언어/C++] 두개의 날짜/시간 간격 차이 계산하기 (difftime)

프로그래밍을 하다 보면 두개의 날짜나 시간의 간격을 계산해야할 경우가 생깁니다. C언어나 C++에서는 두개의 날짜나 시간의 간격은 difftime 함수를 사용하여 구할 수 있습니다. 

 

time 헤더 파일 포함

#include <time.h> //C언어
#include <ctime> //C++

두 날짜나 시간의 간격을 구하는 difftime 함수는 C언어에서는 <time.h>, C++에서는 경우에는 <ctime> 헤더 파일 안에 내장되어 있습니다.

 

difftime 함수 사용법

double difftime(time_t time1, time_t time2);

difftime 함수의 리턴값은 double형입니다.

time1 : 이후 시간
time2 : 이전 시간

 

 difftime 함수 사용 예제 

시간 차이 구하기

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

void main() {

    time_t start, end;
    start = time(NULL);

    for (int i = 0; i < 100; i++) {
        printf("%d번째 for문\n", i);
        Sleep(50);
    }

    end = time(NULL);

    double diff_timer = difftime(end, start);

    printf("for문 수행 시간(difftime): %lf초\n", diff_timer);
}

특정 함수의 수행 시간을 알고 싶을때 유용하게 사용할 수 있습니다.

 

날짜 차이 구하기

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

int main(void)
{
    time_t start, end;
    struct tm user_stime;
    int tm_day, tm_hour, tm_min, tm_sec;
    double diff;
    int my_year, my_month, my_day;
    
    printf("년도 : ");
    scanf_s("%d", &my_year);
    printf("월 : ");
    scanf_s("%d", &my_month);
    printf("일 : ");
    scanf_s("%d", &my_day);
    
    user_stime.tm_year = my_year - 1900; // 년도가 1900년부터 시작하기 때문
    user_stime.tm_mon = my_month - 1; //월이 0부터 시작하기 때문
    user_stime.tm_mday = my_day;
    user_stime.tm_hour = 0;
    user_stime.tm_min = 0;
    user_stime.tm_sec = 0;
    user_stime.tm_isdst = 0; //썸머타임 사용안함
    
    start = mktime(&user_stime);
    time(&end);
    
    diff = difftime(end, start);
    
    tm_day = diff / (60 * 60 * 24);
    diff = diff - (tm_day * 60 * 60 * 24);
    
    tm_hour = diff / (60 * 60);
    diff = diff - (tm_hour * 60 * 60);
    
    tm_min = diff / 60;
    diff = diff - (tm_min * 60);
    
    tm_sec = diff;
    
    printf("%d년 %d월 %d일부터 현재까지 %d일 %d시 %d분 %d초 지났습니다.\n", my_year, my_month, my_day, tm_day, tm_hour, tm_min, tm_sec);
    
    return 0;
}

위와 같이 difftime함수를 사용하여 두개의 날짜의 차이를 알 수 있습니다.

 

time함수를 좀 더 자세히 알고 싶다면 아래 글을 참고해주세요.

[C언어/C++] 현재 날짜/시간 원하는 형태로 출력하기 (time, localtime)

댓글(0)

Designed by JB FACTORY