获取常规时间的方法;包含头文件 time.h
void showtime(struct tm *ptm)
{
printf("%d年,%d月,%d日,%d:%d:%d\n",
ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday,
ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
char *s[] = { "日", "一", "二", "三", "四", "五", "六" };
printf("星期%s,当年的第%d天\n", s[ptm->tm_wday], ptm->tm_yday);
return;
}
void GetTime_1(void)
{
// 获取常规时间 包含头文件time.h
time_t nowtime = time(NULL); // 获取日历时间
printf("nowtime %d\n", nowtime);
struct tm *local, *gm;
local = localtime(&nowtime);
showtime(local);
// 以下精度只有秒
time_t t_start, t_end;
t_start = time(NULL);
Sleep(1000);
t_end = time(NULL);
printf("time: %f s\n", difftime(t_end, t_start));
return;
}
获取高精度时间:
使用GetLocalTime(&sys); 精度达到ms
包含头文件windows.h
void GetTime_2(void)
{
SYSTEMTIME sys;
GetLocalTime(&sys);
printf("%04d/%02d/%02d %02d:%02d:%02d.%03d 星期%01d\n",
sys.wYear, sys.wMonth, sys.wDay,
sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds,
sys.wDayOfWeek);
}
获取高精度时间:
使用GetTickCount接口,精度达到ms
包含头文件windows.h
void GetTime_3(void)
{
DWORD start, stop;
start = GetTickCount();
Sleep(1000);
stop = GetTickCount();
printf("time: %ld ms\n", stop - start);
return;
}
获取高精度时间:
使用QueryPerformanceX接口,可达到更高的精度;
包含头文件windows.h
void GetTime_4(void)
{
LARGE_INTEGER li;
LONGLONG start, end, freq;
QueryPerformanceFrequency(&li);
freq = li.QuadPart;
QueryPerformanceCounter(&li);
start = li.QuadPart;
Sleep(1000); //等待1000ms
QueryPerformanceCounter(&li);
end = li.QuadPart;
int useTime = (int)((end - start) * 1000 * 1000 * 1000 / freq);
printf("time: %d ns\n", useTime);
return;
}