首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 取得系統時間與程式執行時間的三種實用方法

     編輯:VC 教學

方法一:CTime 類別 (MFC 專案首選)


CString str;
CTime tm = CTime::GetCurrentTime(); // 取得目前時間
str = tm.Format(_T("現在時間是 %Y年%m月%d日 %X"));
MessageBox(str, NULL, MB_OK);

Format 格式化字串支援 %Y 年、%m 月、%d 日、%X 完整時間等。

方法二:GetLocalTime API (精確到毫秒、不依賴 MFC)


SYSTEMTIME st;
GetLocalTime(&st);
CString strDate, strTime;
strDate.Format(_T("%04d-%02d-%02d"), st.wYear, st.wMonth, st.wDay);
strTime.Format(_T("%02d:%02d:%02d"), st.wHour, st.wMinute, st.wSecond);
// st.wMilliseconds 可取得毫秒

適合需高精度或非 MFC 專案。

方法三:GetTickCount (系統啟動後經過毫秒數)

1. 量測程式碼區段執行時間


long t1 = GetTickCount();
Sleep(500); // 模擬耗時操作
long t2 = GetTickCount();
CString str;
str.Format(_T("time: %d ms"), t2 - t1);
AfxMessageBox(str);

2. 計算系統已運行時間


long t = GetTickCount();
CString str, str1;
str1.Format(_T("系統已運行 %d 時"), t / 3600000);
str = str1;
t %= 3600000;
str1.Format(_T("%d 分"), t / 60000);
str += str1;
t %= 60000;
str1.Format(_T("%d 秒"), t / 1000);
str += str1;
AfxMessageBox(str);

注意: GetTickCount 回傳 DWORD,約 49.7 天溢位歸零,長期運行系統需改用 GetTickCount64 (Vista+) 或 QueryPerformanceCounter。

適用場景快速選擇表

需求推薦方法備註
顯示人類可讀的日期時間CTime / GetLocalTimeCTime 依賴 MFC;GetLocalTime 純 API
高精度效能計時 (微秒級)QueryPerformanceCounter硬體計數器,精度最高
簡易程式區段計時GetTickCount毫秒精度,注意溢位
系統啟動時長GetTickCount64解決 49 天溢位問題
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved