首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C/C+时间相关的函数

大家平时工作,如果有计算函数耗时或者打印当前时间的需求,一定要来看看这篇文章!

首先介绍下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 --

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201202A01VUF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券