vc++擷取系統時間

來源:互聯網
上載者:User

1 使用time_t time( time_t * timer )       精確到秒

  計算時間差使用double difftime( time_t timer1, time_t timer0 )

 

2 使用clock_t clock() 得到的是CPU時間       精確到1/CLOCKS_PER_SEC秒

 

3 使用DWORD GetTickCount() 得到的是系統啟動並執行時間 精確到毫秒

 

4 如果使用MFC的CTime類,可以用CTime::GetCurrentTime() 精確到秒

 

5 要擷取高精度時間,可以使用

       BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)擷取系統的計數器的頻率

       BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)擷取計數器的值

       然後用兩次計數器的差除以Frequency就得到時間。

 

6 還有David的文章中提到的方法:

       Multimedia Timer Functions

       The following functions are used with multimedia timers.

       timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime

       timeGetTime/timeKillEvent/TimeProc/timeSetEvent     精度很高

 

GetTickCount()和GetCurrentTime()都只精確到55ms(1個tick就是55ms)。如果要精確到毫秒,應該使用timeGetTime函數或QueryPerformanceCounter函數。

 

GetSystemTime返回的是格林威志標準時間

GetLocalTime,和上面用法一樣,返回的是你所在地區的時間,中國返回的是北京時間

 

VOID GetSystemTime(

LPSYSTEMTIME lpSystemTime // address of system time structure

);

函數就可以獲得了,其中LPSYSTEMTIME 是個結構體

含:年,月,日,周幾,小時,分,秒,毫秒。

 

執行個體:

1.使用CTime類

CString str;

//擷取系統時間

CTime tm;

tm=CTime::GetCurrentTime();

str=tm.Format("現在時間是%Y年%m月%d日   %X");

MessageBox(str,NULL,MB_OK);

2: 得到系統時間日期(使用GetLocalTime)

SYSTEMTIME st;

CString strDate,strTime;

GetLocalTime(&st);

strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay);

strTime.Format("%2d:%2d:%2d",st.wHour,st.wMinute,st.wSecond);

3.使用GetTickCount

//擷取程式已耗用時間

long t1=GetTickCount();//程式段開始前取得系統已耗用時間(ms)

Sleep(500);

long t2=GetTickCount();();//程式段結束後取得系統已耗用時間(ms)

str.Format("time:%dms",t2-t1);//前後之差即 程式已耗用時間

AfxMessageBox(str);

//擷取系統已耗用時間

long t=GetTickCount();

CString str,str1;

str1.Format("系統已運行 %d時",t/3600000);

str=str1;

t%=3600000;

str1.Format("%d分",t/60000);

str+=str1;

t%=60000;

str1.Format("%d秒",t/1000);

str+=str1;

AfxMessageBox(str);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.