C++日期和时间操作

        C++11开始提供了对日期和时间进行操作的库chrono,该库提供的时钟类有3个,分别是system_clock、steady_clock和high_resolution_clock。其中,system_clock和high_resolution_clock是实时时钟(real time clock),会随如夏零时(在夏季把标准时间拨早1小时)这样的真实世界的时间的调整而改变,而steady_clock是单调时钟(monotonic clock),不随外界时间调整而改变。

输出时间点

        当需要输出具体的时间点时,这3种时钟均通过成员函数now获得其数据成员的时间点time_point,但在一般情况下,需要输出现实世界的时间,因此宜采用system_clock和high_resolution_clock。这二者的区别在于后者的精度更高。

        将时间以标准日历形式输出时,需要使用时钟类的成员函数to_time_t将now成员函数获取的时间点time_point转换成time_t类型,然后通过库函数gmtime将time_t类型时间转换成日历时间,最后使用iomanip库中的put_time函数将日历时间转换成各种时间书写形式的标准输出流。

using namespace chrono;
time_t tt = system_clock::to_time_t(system_clock::now());
/*put_time的第二个参数中的格式控制符F表示“%Y - %M - %d”格式日期,T表示“%H:%M:%S”格式时间*/
cout << put_time(gmtime(&tt)), "% F % T") << endl;    //2023 - 06 - 09 11:45:08

 输出时间间隔

        在运行某种算法时常常需要知道它的时耗,在chromo库中有一个专门的类duration用来表示时间段。前后两个时间点time_point的相减运算得到的结果就是duration类型。在输出时间间隔时,还需要通过一个转换函数duration_cast将时间段转换成特定的时间单位,如毫秒、小时等,最后使用duration的成员函数count获取最终结果。

/*考虑到测量时间间隔需要稳定不变的时钟,代码中使用的时钟是steady_clock*/
auto start = steady_clock::now();
doSometing();    //执行某种算法
auto end = steady_clock::now();
auto interval = duration_cast<milliseconds>(end - start);
cout << interval.cout() << endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张帅峰_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值