使用COleDateTime類1) 獲取當前時間。 CTime time; time = CTime::GetCurrentTime();2) 獲取時間元素。 int year = time.GetYear() ; int month = time.GetMonth(); int day = time.GetDay(); int hour = time.GetHour(); int minute = time.GetMinute(); int second = time.GetSecond(); int DayOfWeek = time.GetDayOfWeek() ;3) 獲取時間間隔。 CTimeSpan timespan(0,0,1,0); // days,hours,minutes,seconds timespan = CTime::GetCurrentTime() - time;4) 把時間轉換為字符串。 CString sDate,sTime,sElapsed Time ; sDate = time.Format("%m/%d/%y"); //ex: 12/10/98 sTime = time.Format("%H:%M:%S"); //ex: 9:12:02 sElapsed Time = timespan.Format("%D:%H:%M:%S"); // %D is total elapsed days5) 把字符串轉換為時間。 CString sDateTime; int nYear, nMonth, nDate, nHour, nMin, nSec; sscanf(sDateTime, "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec); CTime sTime(nYear, nMonth, nDate, nHour, nMin, nSec); 要想知道更多的時間格式,參見MFC文檔中的strftime
使用COleDateTime類1) 獲得一年中的某一天。 COleDateTime datetime; datetime = COleDateTime::GetCurrentTime(); int DayOfYear = datetime.GetDayOfYear();2) 從文本串中讀取時間。 COleDateTime datetime; datetime.ParseDateTime("12:12:23 27 January 93");3) 獲取時間間隔。 //比方計算日期差 COleDateTime begin_date(1970, 1, 1, 0, 0, 0); COleDateTime end_date(1990, 1, 1, 0, 0, 0); COleDateTimeSpan timeSpan; //計算時間差 timeSpan = end_date - begin_date; long expi_date = timeSpan.GetDays();
說明■ CTime和COleDateTime具有幾乎同樣的功能。然而,COleDateTime允許用戶獲得一年中的某一天(創建Julian日期的一種好方法),以及分析一個時間文本串。■ 與CTime相比, COleDateTime的優點在于它支持DWord變量。COleDateTime使用的位數是雙浮點的兩倍,既然CTime只是簡單地計算從1970年1月1日之后經過的秒數,所以到了2037年它將達到4294967295,從而不能再使用。相反,COleDateTime是一個浮點數,它表示是從1900年12月30號之后的天數(小時是天的小數部分),幾千年之內不會溢出。
補充:
一、COleDateTime.Net有DateTime類用來處理日期時間,很方便,VC則可以用ATL庫的COleDateTime類,用起來也還不錯:首先包含相關的頭文件:#include <ATLComTime.h>初始化COleDateTime實例:COleDateTime date_time;date_time.SetDate(Year, Month, Day);date_time.SetTime(Hour, Minute, Second);COleDateTime重載了+,-,+=,-=等運算符,可以方便的讓時間日期前進倒退,操作對象為COleDateTimeSpan,如:date_time += COleDateTimeSpan(Day, Hour, Minute, Second); //天,時,分,秒COleDateTime還可以將一個有效的時間字符串Parse過來,初始化實例本身:date_time.ParseDateTime(CString("2008-04-18 09:00:00"));
反過來,COleDateTime可以Format成一個時間日期格式的字符串CString:date_time.Format(L"%Y%m%d"); // 年,月,日, 注意m大寫表示分鐘Minute
二、CStringCString用法比較簡單,可是有些用法長期不用會忘掉,為了下次要用的時候能快速通過經驗找到答案,所以還是寫下一些東西。CString 有個Format成員,能轉化成一個CString,參數跟C的PRintf用法差不多,如:CString str;str.Format("%s%d%02i", CString("Example"), 9, 1);// 第一個參數string,第二個Signed十進制數,第三個是寬度為2,不夠則以0填充的Signed十進制數,
因此操作之后str的值為:Expample901
CTime COleDateTime的常用操作和比較(轉)
1) 獲取當前時間。datetime = COleDateTime::GetCurrentTime();CTime和COleDateTime具有幾乎同樣的功能。與CTime相比, COleDateTime的優點在于它支持DWORD變量。COleDateTime使用的位數是雙浮點的兩倍,既然CTime只是簡單地計算從1970年1月1日之后經過的秒數,所以到了2 0 3 7年它將達到4 2 9 4 9 6 7 2 9 5,從而不能再使用。//CString--->COleDateTimeCOleVariant vtime(strCString);COleDateTime time4=vtime;//CTime--->time_tCOleDateTime time3(time2);//time_t--->COleDateTime.
CString COleDateTime CTime互相轉換 strCString="2003-10-27 6:24:37"; //CString--->COleDateTimeCOleVariant vtime(strCString);vtime.ChangeType(VT_DATE);COleDateTime time4=vtime;
COleDateTime time1(1977,4,16,2,2,2); //COleDataTime--->CTimeSYSTEMTIME systime;VariantTimeToSystemTime(time1, &systime);CTime tm(systime);
time_t time2=tm.GetTime(); //CTime--->time_tCOleDateTime time3(time2); //time_t--->COleDateTime
CString str = tDate.Format(_T("%Y-%m-%d"));
新聞熱點
疑難解答