大家平时工作,如果有计算函数耗时或者打印当前时间的需求,一定要来看看这篇文章!
首先介绍下C++标准中的chrono库
是一个关于时间的库,起源于,现在是的标准,话说现在的标准好多都是源于,要进标准的特性似乎都会先在试验一番。
首先看一下使用「chrono」简单计时的示例代码:
中有三个概念「duration、time_point、clock」
「duration」:表示一段时间,三分钟、三秒等,它的定义如下:
ratio的定义如下:
表示数据类型,,等,表示时间单位,N是分子,D是分母,直接看例子吧:
详细看完上述例子您也明白了,ratio的默认的时间单位是1秒,以小时为例,一小时等于3600秒,3600 / 1 == 7200 / 2 == 3600,所以hours == hours2 == hours3。
标准库还提供了用于转换各种。
函数看着很繁琐,直接看看示例代码吧:
「time_point」:用来表示某个具体时间点。
定义如下:
使用方式如下:
这里有个函数,表示这个距离元年也就是1970年1月1日所经过的。
time_point也有各种表示方式,类似于,也提供了转换函数。
「Clocks:」
这里的时钟大体有三种:
「system_clock」
「steady_clock」
「high_resolution_clock」
「system_clock」表示当前的系统时钟,有三个函数:
源码如下:
「steady_clock」表示稳定的时钟,它只有一个函数,就是,后一次调用肯定比上一次调用的返回值大,不受系统时间修改的影响。
源码如下:
使用方式和之前的都相同:
「high_resolution_clock」表示高精度时钟,是系统可用的最高精度的时钟,它其实就是或者steady_clock的别名:
介绍完了C++的那下面再看下C语言的各种时间相关的API吧:
首先可以通过C语言的「clock」拿到程序执行时处理器所使用的时钟数来计时:
该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。也获取 CPU 所使用的秒数,除以「CLOCKS_PER_SEC」即可,返回的 clock_t 其实就是类型的重命名。
使用方式如下:
「如何获取当前时间戳,单位为秒」
也可以使用「time」函数:
该函数返回系统的当前日历时间,返回的是自1970年1月1日以来所经过的秒数。
其实就是一个整数类型,是的重命名,该函数直接使用返回值就好,参数一般传空即可。
存取结果的时间指针变量,类型为,指针变量可以为。
如果指针非,则函数返回值变量与timer指针一样,都指向同一个内存地址;
否则如果指针为,则函数返回一个变量时间。
「如何获取当前时间戳?单位为毫秒」
「如何显示当前的系统时间呢」?可以使用显示当前时间:
该函数返回一个表示当地时间的字符串指针,输出内容格式如下:
示例代码如下:
可以使用「tm」结构自定义显示当前时间的格式:
将日历时间转换为本地时间,从1970年起始的时间戳转换为1900年起始的时间数据结构
另一个类似的函数是「gmtime」函数:
只是该函数返回的是UTC时间,协调世界时(UTC)也被称为格林尼治标准时间(GMT)。
tm结构如下:
在C89的范围是[0-61],在C99更正为[0-60]。通常范围是[0-59],貌似有些系统会出现60秒的跳跃。
是从零开始的,所以一月份为0,十二月份为11。
是从1900年开始计算,所以显示年份的时候需要加上1900
可以通过显示结构的时间:
和类似,返回的都是一个固定时间格式的字符串,只是传入的参数不同。
也可以使用函数,该函数可用于格式化日期和时间为指定的格式,如果产生的 C 字符串小于 个字符(包括空结束字符),则会返回复制到 str 中的字符总数(不包括空结束字符),否则返回零。
格式如下:
使用代码如下:
「参考资料:」
https://www.runoob.com/cprogramming/c-function-strftime.html
https://www.runoob.com/cprogramming/c-function-clock.html
https://www.runoob.com/cplusplus/cpp-date-time.html
https://www.cnblogs.com/jwk000/p/3560086.html
-- End --
领取专属 10元无门槛券
私享最新 技术干货