Modern C++에서는 std::chrono를 사용하면 직관적으로 편리하게 사용이 가능하지만,
최신 컴파일러가 아닌 환경에서 Windows , Linux에서 같이 사용되어야 할 코드에서는
time_t, tm을 이용하는게 최선이 아닐까 한다.
1. time_t의 용도
* 1970년 1월 1일 자정 이후 경과된 시간(초 단위)을 가지고 있다.
* 현재 시간을 가져오기에 편리하다. (관련 함수 제공)
* 시간간의 간격 계산이 편리하다.
#include <time.h> time_t tNow = time(NULL); // 현재 시간 가져오기 time_t mktime(&sTm_UD); int nDiff = difftime(tUD, tNow); // 두 시간 간의 차이를 초(sec) 단위로 계산한다.
tNow += 150 * 60 * 60 * 24;
|
2. tm의 용도
* 1900년 이후 시간의 표현이 가능하다.
* 년, 월, 일, 시, 분, 초 의 사용자가 직접 입력이 가능하다.
// tm을 특정 날짜로 만들기
tm sTm_UD;
memset(&sTm_UD, 0, sizeof(tm));
sTm_UD.tm_year = 200;
sTm_UD.tm_mon = 2;
sTm_UD.tm_mday = 5;
printf(asctime(&sTm_UD));
cout << 1900
+ sTm_UD.tm_year << "
- " << 1 + sTm_UD.tm_mon
<< "
- " << sTm_UD.tm_mday
<< endl; |
이렇게 두 타입간의 장점이 다르다.
이제 두 타입간의 변환만 할 수 있으면 충분히 어떤 용도로도 활용이 가능 할 것이다.
3. time_t <-> tm
time_t tNow = time(NULL); // 현재 시간 가져오기
// time_t to tm
tm
sTm_Now;
localtime64_s(&sTm_Now, &tNow);
time_t tUD = mktime(&sTm_Now); // tm -> time_t
|
localtime64_s( ) 와 mktime( )를 이용하면 서로 형변환이 가능하다.
댓글 없음:
댓글 쓰기