MFC 시간 제어, DWORD -> time_t -> CTime() COleDateTime() 사용




 어떤 파일의 시간 정보를 얻어왔다.
해당 API 함수는 시간 정보를 DWORD 값으로 리턴 하고 있었다.
시간 정보를 얻었다는 기쁨에 값을 받았는데
음... 이걸 어떻게 변환해 줘야 하지??

CTime, COIeDateTime 클래스가 있다는 것을 알았지만
이 클래스의 객체를 생성해서 현재 시간을 얻어오고... 그런 작업밖에 안해본 지라
두 클래스는 제쳐두고 변환하려 애썼다.

c 라이브러리인 struct tm 구조체로 변환해서...
해결하긴 했지만 C++/MFC 적으로 해결하지 못해 찝찝했다.

오늘도 2시간 고생하다가... 알았냈다.
CTime, COleDateTime 클래스 생성자 인수로 time_t 형을 파라미터로 받는다. -_-;;;



                time_t longtime;
                //tm pTm;                
                longtime = (time_t)(pevlr->TimeGenerated);  

                //if (localtime_s(&pTm, &longtime)) {
                //    AfxMessageBox(_T("error"));
                // }


                COleDateTime oleTime(longtime);
                CTime ctime(longtime);
                

                INT nYear, nMonth, nDay;
                INT nHour, nMin, nSec;

                
/*
                nYear = oleTime.GetYear();
                nMonth = oleTime.GetMonth();
                nDay = oleTime.GetDay();
                nHour = oleTime.GetHour();
                nMin = oleTime.GetMinute();
                nSec = oleTime.GetSecond();
                */

                nYear = ctime.GetYear();
                nMonth = ctime.GetMonth();
                nMonth = ctime.GetMonth();
                nDay = ctime.GetDay();
                nHour = ctime.GetHour();
                nMin = ctime.GetMinute();
                nSec = ctime.GetSecond();
                TRACE1("%d-", nYear);
                TRACE1("%d-", nMonth);
                TRACE1("%d  ", nDay);
                TRACE1("%d:", nHour);
                TRACE1("%d:", nMin);
                TRACE1("%d\n", nSec);




##


Posted by six605
,