C++/(ATL)COle Date Time 사용




1. 현재 시간 #

  1. COleDateTime tm = COleDateTime::GetCurrentTime();
  2. CString curDate = tm.Format("%Y%m%d");

%Y%m%d
20130809

%Y-%m-%d %H:%M:%S
2013-08-09 15:46:44

1.1. 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

2. 두 COleDateTime 객체 간의 시간 차이 #

  1. COleDateTime tm1;
  2. COleDateTime tm2;
  3. tm1.ParseDateTime(_T("2012-01-01 12:00:01"));
  4. tm2.ParseDateTime(_T("2013-02-02 12:10:30"));
  5. COleDateTimeSpan ts = tm2 - tm1;
  6. CString str;
  7. str.Format(_T("%d일 %d시간 %d분 %d초, %g시간"),
  8.     ts.GetDays(), ts.GetHours(), ts.GetMinutes(), ts.GetSeconds(), ts.GetTotalHours());
  9. AfxMessageBox(str);

398일 0시간 10분 29초, 9552시간


  1. CString str1("2012-11-20 14:40:57");
  2. CString str2("2012-11-20 14:40:59");
  3. COleDateTime tm1;
  4. COleDateTime tm2;
  5. tm1.ParseDateTime(str1);
  6. tm2.ParseDateTime(str2);
  7. COleDateTimeSpan ts = tm2 - tm1;
  8. D0(_T("%f"), ts.GetTotalSeconds());

2.000000

3. 시간 늘리기 #

COleDateTimeSpan( long lDays, int nHours, int nMins, int nSecs );
  1. COleDateTime tm = COleDateTime::GetCurrentTime();
  2. COleDateTimeSpan AddMin(0, 0, 5, 0);
  3.  
  4. tm += AddMin;


4. Convert #

4.1. SYSTEMTIME to struct tm #

  1. COleDateTime dt = COleDateTime::GetCurrentTime();
  2.     SYSTEMTIME st;
  3.     dt.GetAsSystemTime(st);
  4.     struct tm *tm_date = new tm;
  5.     tm_date->tm_hour = st.wHour;
  6.     tm_date->tm_min = st.wMinute;
  7.     tm_date->tm_mday = st.wDay;
  8.     tm_date->tm_mon = st.wMonth;
  9.     tm_date->tm_sec = st.wSecond;
  10.     tm_date->tm_year = st.wYear - 1900;
  11.     time_t time = mktime(tm_date);

4.1.1. SYSTEMTIME to struct tm 참고 #

  1. typedef struct _SYSTEMTIME {
  2. WORD wYear;
  3. WORD wMonth;
  4. WORD wDayOfWeek;
  5. WORD wDay;
  6. WORD wHour;
  7. WORD wMinute;
  8. WORD wSecond;
  9. WORD wMilliseconds;
  10. } SYSTEMTIME;
  11. TM Data structure
  12. {
  13. tm_sec //Seconds after minute (0 – 59)
  14. tm_min//Minutes after hour (0 – 59)
  15. tm_hour//Hours since midnight (0 – 23)
  16. tm_mday //Day of month (1 – 31)
  17. tm_mon//Month (0 – 11; January = 0)
  18. tm_year//Year (current year minus 1900)
  19. tm_wday//Day of week (0 – 6; Sunday = 0)
  20. tm_yday//Day of year (0 – 365; January 1 = 0)
  21. tm_isdst//Always 0 for gmtime
  22. }

이 글에는 1 개의 댓글이 있습니다.