当前位置:主页 > 查看内容

【C语言】标准C输出当前时间,时间差,详细解析(4种方法)

发布时间:2021-05-05 00:00| 位朋友查看

简介:用C语言输出当前的系统时间在C语言库中已经提供了很多方法有的方法能够获取到毫秒级别的时间。 很多时候需要获取程序执行时间的时间差那么能够精确到毫秒的时间就更为合适。 下面介绍四种方式分别给出了实例在输出时间的时候需要注意各个输出数据的大小不要……

用C语言输出当前的系统时间,在C语言库中已经提供了很多方法,有的方法能够获取到毫秒级别的时间。

很多时候,需要获取程序执行时间的时间差,那么能够精确到毫秒的时间就更为合适。

下面介绍四种方式,分别给出了实例,在输出时间的时候,需要注意各个输出数据的大小,不要超过数据所能表示的范围。

方法1,用time.h中的方法获取时间

time_t start, end;  start = time(NULL);  Sleep(1000);  end = time(NULL);  printf("start=%d\n", start);  printf("end=%d\n", end);  printf("times=%d\n", end - start);

输出如下

start=1617535664end=1617535665times=1

输出的时间以秒为单位,也就是说精确到为秒。

如果想要更高的精确度的话,这个显然是不合适的。

?

方法2,用windows.h中的方法获取时间

int start,end;start = GetTickCount();Sleep(1000);  end = GetTickCount();  printf("start: %d ms\n", start);  printf("end: %d ms\n", end);  printf("time: %d ms\n", end - start);

这个也是输出时间的函数,输出如下

start: 9983061538135917 msend: 9983061538136917 mstime: 9983058774066152 ms

这个输出结果似乎不对,仔细看看,这些数值已经超过了int所能够表示的范围,两者相减,自然是错误的输出。

如何修改呢?请参考公众号

?

方法3,获取到毫秒级别的时间

  LARGE_INTEGER li;  LONGLONG start, end, freq;  QueryPerformanceFrequency(&li);  freq = li.QuadPart;  QueryPerformanceCounter(&li);  start = li.QuadPart;  Sleep(3000);  QueryPerformanceCounter(&li);  end = li.QuadPart;  int useTime = (int)((end - start) * 1000 / freq);  printf("time: %d ms\n", useTime);  printf("(end - start) * 1000: %lld ms\n", (end - start) * 1000);  printf("freq: %ld ms\n", freq);

这种方式也能输出毫秒级的时间,但是一定要注意各种数据的长度,在格式控制符的选择上,一定要小心。

time: 3001 ms(end - start) * 1000: 7017387000 msfreq: 2338339 ms

这种方式输出的时间精度,可能没有下面这种方式的高

?

方法4,获取到日期等,精确到毫秒

代码放在main函数中,头文件windos.h

SYSTEMTIME currentTime;  GetSystemTime(&currentTime);    printf("time: %u/%u/%u %u:%u:%u:%u %d\n",    currentTime.wYear, currentTime.wMonth, currentTime.wDay,    currentTime.wHour, currentTime.wMinute, currentTime.wSecond,    currentTime.wMilliseconds, currentTime.wDayOfWeek);

运行输出

time: 2021/4/4 10:51:38:486 0

最后输出的0表示星期天如何求时间差?请参考公众号

这里用int类型,在VS2017中有4个字节的内存,是足够大的,如果是在2个字节的内存时,则需要用long类型返回。

?

以上是四种输出时间差的方式,运行环境是VS2017,Windows系统。

;原文链接:https://blog.csdn.net/m0_50984266/article/details/115432757
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐