😉一、代码展示
#include <functional> #include <iostream> #include "chrono" int main() { //num为分子 den为分母 std::cout << std::chrono::milliseconds::period::num << std::endl;//输出1 std::cout << std::chrono::milliseconds::period::den << std::endl;//输出1000 解释一下怎么来的 一秒除以一千就是一毫秒 所以分子是1 分母是1000 //物理时间计时,steady_clock:是固定的时钟,相当于秒表。开始计时后,时间只会增长并且不能修改,适合用于记录程序耗时,high_resolution_clock:和时钟类 steady_clock 是等价的(是它的别名)。 auto start = std::chrono::system_clock::now(); for (int i = 0; i < 10000000; i++) { } auto end = std::chrono::system_clock::now(); auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start); std::cout << double(duration.count()) << std::endl; //定义毫秒级别的时钟类型 typedef std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> microClock_type; //获取当前时间点,windows system_clock是100纳秒级别的(不同系统不一样,自己按照介绍的方法测试),所以要转换 microClock_type tp = std::chrono::time_point_cast<std::chrono::milliseconds>(std::chrono::system_clock::now()); //获取ctime格式的时间 time_t tt = std::chrono::system_clock::to_time_t(tp); char _time[50]; ctime_s(_time, sizeof(_time), &tt); std::cout << "now time is : " << _time; //计算距离1970-1-1,00:00的时间长度,因为当前时间点定义的精度为毫秒,所以输出的是毫秒 std::cout << tp.time_since_epoch().count() << std::endl; //定义时间间隔 std::chrono::duration<double, std::ratio<9, 7>> d1(3); std::chrono::duration<double, std::ratio<6, 5>> d2(1); // d1 和 d2 统一之后的时钟周期 对于分子 6,、9 最大公约数为 3,对于分母 7、5 最小公倍数为 35,因此推导出的时钟周期为 ratio<3,35> std::chrono::duration<double, std::ratio<3, 35>> d3 = d1 - d2; std::cout << d3.count() << " tick" << std::endl; // 新纪元1970.1.1时间 std::chrono::system_clock::time_point epoch; std::chrono::duration<int, std::ratio<60*60*24>> day(1); // 新纪元1970.1.1时间 + 1天 std::chrono::system_clock::time_point ppt(day); using dday = std::chrono::duration<int, std::ratio<60 * 60 * 24>>; // 新纪元1970.1.1时间 + 10天 std::chrono::time_point<std::chrono::system_clock, dday> t(dday(10)); // 系统当前时间 std::chrono::system_clock::time_point today = std::chrono::system_clock::now(); // 转换为time_t时间类型 time_t tm = std::chrono::system_clock::to_time_t(today); std::cout << "今天的日期是: " << ctime(&tm); time_t tm1 = std::chrono::system_clock::to_time_t(today+day); std::cout << "明天的日期是: " << ctime(&tm1); time_t tm2 = std::chrono::system_clock::to_time_t(epoch); std::cout << "新纪元时间: " << ctime(&tm2); time_t tm3 = std::chrono::system_clock::to_time_t(ppt); std::cout << "新纪元时间+1天: " << ctime(&tm3); time_t tm4 = std::chrono::system_clock::to_time_t(t); std::cout << "新纪元时间+10天: " << ctime(&tm4); return 0; }
🐱🐉二、运行结果
🧊文章总结
提示:这里对文章进行总结:
简单的使用了解一下这个库怎么用。