#keywords ATL,C++,COleDateTime,SYSTEMTIME,struct tm [[TableOfContents]] == 현재 시간 == {{{#!gcode COleDateTime tm = COleDateTime::GetCurrentTime(); CString curDate = tm.Format("%Y%m%d"); }}} ---- {{{ %Y%m%d 20130809 %Y-%m-%d %H:%M:%S 2013-08-09 15:46:44 }}} === CTime::Format Types === {{{ %a Abbreviated weekday name %A Full weekday name %b Abbreviated month name %B Full month name %c Date and time representation appropriate for locale %d Day of month as decimal number (01~31) %H Hour in 24-hour format (00~23) %I Hour in 12-hour format (01~12) %j Day of year as decimal number (001~366) %m Month as decimal number (01~12) %M Minute as decimal number (00~59) %p Current locale's A.M./P.M. indicator for 12-hour clock %S Second as decimal number (00~59) %U Week of year as decimal number, with Sunday as first day of week (00~53) %w Weekday as decimal number (0~6; Sunday is 0) %W Week of year as decimal number, with Monday as first day of week (00~53) %x Date representation for current locale %X Time representation for current locale %y Year without century, as decimal number (00~99) %Y Year with century, as decimal number %z, %Z Either the time-zone name or time zone abbreviation, depending on registry settings; no characters if time zone is unknown %% Percent sign }}} == 두 COleDateTime 객체 간의 시간 차이 == {{{#!gcode COleDateTime tm1; COleDateTime tm2; tm1.ParseDateTime(_T("2012-01-01 12:00:01")); tm2.ParseDateTime(_T("2013-02-02 12:10:30")); COleDateTimeSpan ts = tm2 - tm1; CString str; str.Format(_T("%d일 %d시간 %d분 %d초, %g시간"), ts.GetDays(), ts.GetHours(), ts.GetMinutes(), ts.GetSeconds(), ts.GetTotalHours()); AfxMessageBox(str); }}} ---- {{{ 398일 0시간 10분 29초, 9552시간 }}} {{{#!gcode CString str1("2012-11-20 14:40:57"); CString str2("2012-11-20 14:40:59"); COleDateTime tm1; COleDateTime tm2; tm1.ParseDateTime(str1); tm2.ParseDateTime(str2); COleDateTimeSpan ts = tm2 - tm1; D0(_T("%f"), ts.GetTotalSeconds()); }}} ---- {{{ 2.000000 }}} == 시간 늘리기 == COleDateTimeSpan( long lDays, int nHours, int nMins, int nSecs ); {{{#!gcode COleDateTime tm = COleDateTime::GetCurrentTime(); COleDateTimeSpan AddMin(0, 0, 5, 0); tm += AddMin; }}} ---- {{{ }}} == Convert == === SYSTEMTIME to struct tm === {{{#!gcode COleDateTime dt = COleDateTime::GetCurrentTime(); SYSTEMTIME st; dt.GetAsSystemTime(st); struct tm *tm_date = new tm; tm_date->tm_hour = st.wHour; tm_date->tm_min = st.wMinute; tm_date->tm_mday = st.wDay; tm_date->tm_mon = st.wMonth; tm_date->tm_sec = st.wSecond; tm_date->tm_year = st.wYear - 1900; time_t time = mktime(tm_date); }}} ==== SYSTEMTIME to struct tm 참고 ==== {{{#!gcode typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME; TM Data structure { tm_sec //Seconds after minute (0 – 59) tm_min//Minutes after hour (0 – 59) tm_hour//Hours since midnight (0 – 23) tm_mday //Day of month (1 – 31) tm_mon//Month (0 – 11; January = 0) tm_year//Year (current year minus 1900) tm_wday//Day of week (0 – 6; Sunday = 0) tm_yday//Day of year (0 – 365; January 1 = 0) tm_isdst//Always 0 for gmtime } }}}