vc++获取系统时间

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值