参考链接:
- cpp reference chrono
chrono时间库平时主要用于sleep()操作,计算操作时间间隔,一些标准库的wait()函数(比如future变量的wait_for())的参数等。
chrono库里面主要包括时钟,时间点,时长三个概念。
时钟
- 系统时钟(system_clock)
- 单调时钟(steady_clock)
- 高精度时钟(high_resolution_clock)
系统时钟的一些常用用法
1.获取当前时间。通过system_clock::now()函数可以获取当前的时间点,返回类型是time_point。
2.计算时间差值。通过在某些操作前后分别通过now()函数获取当前时间点,可以计算时间差值。
3.to_time_t()函数。将time_point类型的值转换为std::time_t类型。
#include <iostream>
#include <chrono>
#include <iomanip>
#include <thread>void printCurrentTime(void)
{std::chrono::system_clock::time_point sysT = std::chrono::system_clock::now();std::cout << std::chrono::duration_cast<std::chrono::seconds>(sysT.time_since_epoch()).count() << std::endl;auto t1 = std::chrono::system_clock::to_time_t(sysT);std::cout << std::put_time(std::localtime(&t1), "%Y-%m-%d %H:%M:%S") << std::endl; char buffer[80];std::strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", std::localtime(&t1));std::cout << "use strftime: " << buffer << std::endl;
}void delayTime(int sec)
{std::this_thread::sleep_for(std::chrono::seconds(sec));
}int main()
{printCurrentTime();delayTime(5);printCurrentTime();std::chrono::system_clock::time_point start = std::chrono::system_clock::now();delayTime(5);std::chrono::system_clock::time_point end = std::chrono::system_clock::now();std::cout << "cost time = " << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << std::endl;return 0;
}