ProgrammingLang/c++

[C++ 개발자되기] 14. millisecond시간 구하기

jinkwon.kim 2020. 2. 2. 15:57
728x90
반응형

>>[C++ 관련 모든 글 보기]

1. 목표 

  millisecond단위 까지 시간 구하기, 사용하는 함수는 C함수 입니다.

 

2. 필요 헤더 

  1) #include <time.h>

    - localtime_r() 사용을 위해 필요

    - ftime() 에서 필요

    - strftime() 에서 필요 

  2) #include <sys/timeb.h>

    - struct timeb 에서 필요로함 

 

3. 필요 함수

  1) void ftime(struct *timeb);

    - millisecond 까지 시간을 구하는 함수

  2) struct tm *localtime_r(const time_t *timep, struct tm *result);

    - 지역 시간을 구하는 함수 

 

4. 구조체 정보 

  1) struct tm

#include <time.h>  // C++ 에서는 <ctime>
struct tm {
  int tm_sec;    //초 0-59(대분의 시스템서 이렇게 나옵니다), 일부 시스템에서 0 ~ 61 까지
  int tm_min;    //분 0-59
  int tm_hour;   //시 0-23
  int tm_mday;   //일 1-31
  int tm_mon;    //월 0-11
  int tm_year;   //년 지금이 몇 년이 지났는지 (1900 이후), 고로 현재 2020은 120이 나옴.
  int tm_wday;   //요일 0-6 (일요일 부터 시작)
  int tm_yday;   // 1 월 1 일 부터 몇 일이 지났는지
  int tm_isdst;  // 0 보다 크면 서머 타임제를 실시, 0 이면 실시 안함 
};

 

5. 예제 코드

#include <iostream>                                           
#include <sstream>                                            
#include <time.h>                                             
#include <sys/timeb.h> // ftime() 및 struct timeb 떄문에 필요 
                                                              
int main()                                                    
{                                                             
    struct timeb tb;   // <sys/timeb.h>                       
    struct tm tstruct; // 기본 사용가능                       
    std::ostringstream oss;                                   
    char buf[128];                                            
                                                              
    ftime(&tb);
    // Thread safe 하기 위해서 localtime_r을 이용
    if (nullptr != localtime_r(&tb.time, &tstruct)) {         
        strftime(buf, sizeof(buf), "%Y-%m-%d %T", &tstruct);  
        oss << buf; // 연-월-일-시-분-초                      
        oss << tb.millitm; // millisecond 표시                
    }                                                         
    std::cout << oss.str() << std::endl;                      
    oss.str("");                                              
    return 0;                                                 
}                                                             

>>[C++ 관련 모든 글 보기]

728x90
반응형