오늘은 이론 공부가 아닌 간단한 실습을 하는 차원으로 시간을 구하는 방법을 알아보도록 하겠습니다.
#include
위 헤더팡리에서 시간 관련 함수들을 제공 합니다. 오늘 실습의 내용은 현재 시간을 구하는 코딩입니다.
time_t m_t;
struct tm *m_tm;
두가지 형태로 시간 객체, 시간 구조체 변수를 만들어 접근이 이루어 집니다.
시간을 우리가 이해하기 쉬운 형태로 변환하는 형태가 tm 구조체 입니다.
tm 구조체를 열어보시면 아래와 같은 형태로 되어 있는 것을 보실 수 있을 거에요.
struct tm {
int tm_sec; // seconds of minutes from 0 to 61
int tm_min; // minutes of hour from 0 to 59
int tm_hour; // hours of day from 0 to 24
int tm_mday; // day of month from 1 to 31
int tm_mon; // month of year from 0 to 11
int tm_year; // year since 1900
int tm_wday; // days since sunday
int tm_yday; // days since January 1st
int tm_isdst; // hours of daylight savings time
}
현재 시간을 구하기 때문에 몇시 몇분이니깐 tm_hour, tm_min을 사용하게 됩니다. 그럼 이 구조첵 변수로 바로 불러오면 읽을 수 있는 것이 아닙니다.
m_tm = gmtime(&m_t);
이렇게 시간 값을 m_t를 던져 줘서 세팅을 해야 합니다. 그 값을 기준으로 구조체 안에 각 시간변수의 값들을 읽을 수 있게 되는 것이죠.
참고로,
time_t m_t;
이 time_t는 UTC 1970-1-1 0:00:00 이후 경과한 초를 담고 있습니다. 그리고 현재의 시간을 구하기 위해서는 다음과 같이 세팅을 해야 합니다.
time(&m_t);
//m_t =time(0);
이렇게 시간 함수에 값을 m_t로 하거나 time(0)으로 한 뒤 그 time(0)의 반환 값을 m_t로 해서 gmtime(&m_t)함수로 해서 시간을 세팅하셔도 되고 아예 time(&m_t)함수로 하고 처음 변수 선언 했던 값으로 세팅하면 m_t값은 time(0)의 반환 값이 되고 그 값을 gmtime(&m_t)함수에 인자 값으로 넣으면 현재의 시간을 구할 수 있게 됩니다. 두가지 형태가 있는데 자신이 이해하기 쉬운 형태로 코딩하면 됩니다.
이렇게 시간값들이 세팅이 완료 되면은 구조체 tm의 각 변수들을 불러오기만 하면 해당 시간 값을 얻을 수 있게 됩니다.
m_tm->tm_hour
m_tm->tm_min
이렇게 말이죠. 참고로 tm_hour는 표준 시간값인데 한국시간과는 9시간의 차이가 발생합니다. 그래서 +9을 한 뒤에 하루 시간은 24시간이니깐 다시 24로 나누어 주면 현재 한국 시간을 정확히 알아 낼 수 있게 됩니다.
그렇다면 위에서 설명한 것처럼 한국시간을 구할 수 있는지 실제로 코딩을 해봐야 겠죠.
[전체소소]
#include
#include
using namespace std;
int main(int argc, char** argv) {
time_t m_t;
struct tm *m_tm;
time(&m_t);
//m_t =time(0);
m_tm = gmtime(&m_t);
cout<<"[한국시간] "<<(m_tm->tm_hour + 9) % 24<<" : "<<m_tm->tm_min<<endl;
return 0;
}
[결과]
한국시간을 구하는 방법을 실습해 보았습니다. 현재 표준 시간과 같이 나타내고 싶다면 현재 표준 시간은 +9을 안한 시간값을 출력 하면 됩니다. 다른 외국 시간을 구하고 싶다면 해당 외국 시간이 표준 시간과의 시간차만 알고 있다면 쉽게 각국의 시간을 계산을 할 수 있습니다.