天天看点

获取系统时间的几种方法,最高精确1ms

●【获取系统时间的几种方法,最高精确1ms】

1.硬件支持高精度计时器 ( 精确到1ms )

//获取的最准确,精确到1ms
LARGE_INTEGER nFreq;
LARGE_INTEGER nBeginTime;
LARGE_INTEGER nEndTime;
double time;

QueryPerformanceFrequency(&nFreq);
QueryPerformanceCounter(&nBeginTime);       

QueryPerformanceCounter(&nEndTime);
time = (double)(nEndTime.QuadPart - nBeginTime.QuadPart) / (double)nFreq.QuadPart;

CString str;
str.Format("%lf", time);
MessageBoxA(str);
           

2.使用CTime类   

CString str; //获取系统时间   

CTime tm; tm=CTime::GetCurrentTime();   

str=tm.Format("现在时间是%Y年%m月%d日 %X");

MessageBox(str,NULL,MB_OK);
           

3: 得到系统时间日期(使用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);
           

4.使用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);
           

继续阅读