#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
DWORD tick;
int i=0;
while(true)
{
tick=GetTickCount();
int hour=tick/1000/3600;
int minute=tick/1000/60-hour*60;
int second=tick/1000-hour*3600-minute*60;
cout<<"开机时间是:"<<hour<<"时"<<minute<<"分"<<second<<"秒"<<endl;
Sleep(1000);
}
}
函数名称:GetTickCount
函数功能:返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD。
函数原型: DWORD GetTickCount(void);
需要的头文件:windows.h
它还有一个作用就是计算程序运行的时间,方法是记录起始时间和终止时间,然后相减就可以了。而要记录的程序段就放在两个GetTickCout之间。举例如下:
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
DWORD tick;
int i=0;
while(i<10000000)
{
i++;
}
cout<<GetTickCount()-tick<<endl;
}
注意事项:
GetTickcount函数:它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某个方法执行的时间,其函数原型是DWORD GetTickCount(void),返回值以32位的双字类型DWORD存储,因此可以存储的最大值是232 ms约为49.71天,因此若系统运行时间超过49.71天时,这个数就会归0,MSDN中也明确的提到了:"Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days."。因此,如果是编写服务器端程序,此处一定要万分注意,避免引起意外的状况。
我们同样可以使用clock来进行程序运行的计算。
函数名称:clock
函数功能: 返回处理器调用某个进程或函数所花费的时间。
函数用法: clock_t clock(void);
函数说明:clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。
首先我们通过一个程序来说明问题:
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
void main()
{
clock_t start,end;
int i=0;
start=clock();
cout<<start<<endl;
Sleep(10000);
end=clock();
// cout<<end<<endl;
// Sleep(1000);
// cout<<clock()<<endl;;
cout<<end-start<<endl;
}
运行结果:
0
10000
11000
10000
Press any key to continue
上面的程序实现了计算测试程序运行的时间。而注释掉的部分是让大家了解,在程序运行过程中,第一次使用clock时,它的初始值为0,以后每次调用该函数,都是在第一次的基础上进行的计算,所以第二次(end)的结果是1000,第三次的结果是1100(同样是在第一次的基础上进行的)。