반응형
1. time_t
time_t는 time 헤더에서 시간을 잘 다루기 위해서 만들어진 데이터 타입이다.
일반적으로 1970년 1월 1일 00:00 UTC (유닉스 타임)이후 경과된 초(정수값)를 나타낸다.
time() 이라는 함수의 반환형이다.
2. tm 구조체
tm구조체는 시간을 우리가 알아볼 수 있게 세세하게 변수로 나누어서 만들어져 있는 구조체 이다.
time_t는 사람이 알아보기 힘드므로 tm 구조체를 활요하면된다.
struct tm
{
int tm_sec; // seconds after the minute - [0, 60] including leap second
int tm_min; // minutes after the hour - [0, 59]
int tm_hour; // hours since midnight - [0, 23]
int tm_mday; // day of the month - [1, 31]
int tm_mon; // months since January - [0, 11]
int tm_year; // years since 1900
int tm_wday; // days since Sunday - [0, 6]
int tm_yday; // days since January 1 - [0, 365]
int tm_isdst; // daylight savings time flag
};
주석에 개구간으로 표시되는 숫자의 범위가 적혀있다.
주의해야할 점은
- 월을 나타내는 tm_mon은 0에서부터 11까지라는 것이다. 그래서 우리는 +1을 해서 사용해야한다.
- 연도를 나타내는 tm_year을 보면 years since 1900이라고 나와있다. 그래서 우리는 +1900를 더해서 사용해야한다.
3. time()
함수의 원형은 아래와 같다.
time_t time(time_t *pTime)
함수를 사용하는 방법은 두가지가 존재한다.
매개변수에 NULL을 집어 넣어서 반환형으로 시간을 받는 방법과
매개변수 time_t*에 변수 time_t 를 참조하여 값을 얻어오는 방법이 있다.
#include<stdio.h>
#include<time.h>
int main(void) {
time_t t1;
time(&t1);
printf("%lld\n", t1);
time_t t2;
t2 = time(NULL);
printf("%lld\n", t2);
return 0;
}
하지만 이렇게 하면 우리가 알아보기 힘든 time_t 형태로 나오기 떄문에 알아보기 힘들다.
4. localtime()
함수의 원형은 아래와 같다.
struct tm* localtime(const time_t* pTime);
이 함수를 쓰면 tm 구조체에 보기좋게 정리가 된다.
하지만 귀찮은 점은 하나하나 변수로 옮겨줘야한다는 것이다.
5. ctime(), asctime()
우리가 위에서 시간을 다루는 time_t 데이터 타입과 구조체 tm에 대해서 알아보았는데
ctime, asctime 함수는 그 시간들을 미리 문자열로 만들어 놓은 함수 이다.
함수의 원형은 아래와 같다
char* ctime(const time_t* pTime);
char* asctime(const struct tm* pTm);
위 함수 두개는 매개변수는 각각 다른 형태의 시간을 받지만 반환형은 같다.
반환형 : "Www Mmm dd hh:mm:ss yyyy"
반응형
'공부 > C++' 카테고리의 다른 글
[ C++ ] STL 정리 (0) | 2022.11.18 |
---|