안녕하세요, 오늘은 시간을 얻어오는 함수에 대해서 알아보도록 하겠습니다.
SYSTEMTIME을 사용하여서 현재 시간을 알아와보도록 하겠습니다.
프로젝트를 하나 생성해 줍니다. 그리고 시간 표시를 위해 Static Control과 버튼을 만들어 줍니다.
![](https://3001ssw.com/wp-content/uploads/2023/07/Cap-2020-02-17-22-21-54-630-min.png)
그리고 “GetSystemTime” 버튼을 더블클릭 하셔서 아래와 같이 코딩합니다.
void CMFCApplication1Dlg::OnBnClickedButton1()
{
SYSTEMTIME tmSystem;
::GetSystemTime( &tmSystem );
CString sTime;
sTime.Format( _T("%d년 %d월 %d일 %d시 %d분 %d초"),
tmSystem.wYear, tmSystem.wMonth, tmSystem.wDay, tmSystem.wHour, tmSystem.wMinute, tmSystem.wSecond );
m_stTime.SetWindowText( sTime );
}
위 내용대로 코딩 한 뒤 실행하면 아래와 같이 표시됩니다.
![](https://3001ssw.com/wp-content/uploads/2023/07/Cap-2020-02-17-22-18-49-866-min.png)
GetSystemTime 함수는 UTC 기준으로 시간을 가져오기 때문에 정확하지 않습니다.
그럴 경우 GetLocalTime함수를 사용하여 시간을 읽어오면 됩니다. 아래와 같이 버튼 하나 추가한 뒤 코딩을 해줍니다.
![](https://3001ssw.com/wp-content/uploads/2023/07/Cap-2020-02-17-22-25-29-667-min.png)
void CMFCApplication1Dlg::OnBnClickedButton2()
{
SYSTEMTIME tmSystem;
::GetLocalTime( &tmSystem ); // PC에 설정된 지역의 시간을 읽어옴
CString sTime;
sTime.Format( _T( "%d년 %d월 %d일 %d시 %d분 %d초" ),
tmSystem.wYear, tmSystem.wMonth, tmSystem.wDay, tmSystem.wHour, tmSystem.wMinute, tmSystem.wSecond );
m_stTime.SetWindowText( sTime );
}
위 GetLocalTime 버튼을 실행하면 아래와 같이 표시됩니다.
![](https://3001ssw.com/wp-content/uploads/2023/07/Cap-2020-02-17-22-26-05-231-min.png)
시간을 가져오는 함수는 생각보다 쉽습니다.
하지만 시간과 시간의 차이나 계산을 하는 것은 SYSTEMTIME보단 CTime과 CTimeSpan을 많이 이용합니다.
다음 글에서는 해당 클래스를 이용하여 시간을 얻거나 계산을 해보겠습니다.