提高网站规范化建设,建立一个网站怎样赚钱,公司免费网站建设,美食分享网站设计std::chrono是C11引入的标准库#xff0c;用于时间的计算和处理。它按照ISO8601标准定义了多个时间类#xff0c;例如#xff1a;duration#xff08;持续时间#xff09;、time_point#xff08;时间点#xff09;和clock#xff08;时钟#xff09;。以下是一些常见…std::chrono是C11引入的标准库用于时间的计算和处理。它按照ISO8601标准定义了多个时间类例如duration持续时间、time_point时间点和clock时钟。以下是一些常见的用法
1. 计算程序运行时间 #include iostream
#include string
#include chrono
#include unistd.h
#include sstream
#include iomanip
#include threadint main(int argc, char *argv[])
{ //1. 计算耗时auto start std::chrono::system_clock::now();//std::chrono::time_point start std::chrono::system_clock::now();int32_t j 0;for(int i0;i10000;i){j;} //sleep(1);std::this_thread::sleep_for(std::chrono::seconds(1));auto end std::chrono::system_clock::now();auto diff1 std::chrono::duration_caststd::chrono::seconds(end - start).count(); //秒auto diff2 std::chrono::duration_caststd::chrono::milliseconds(end - start).count(); //毫秒auto diff3 std::chrono::duration_caststd::chrono::microseconds (end - start).count(); //微妙auto diff4 std::chrono::duration_caststd::chrono::nanoseconds(end - start).count(); //纳秒//std::chrono::minutes//std::chrono::hours std::coutdiff1 is: diff1std::endl;std::coutdiff2 is: diff2std::endl;std::coutdiff3 is: diff3std::endl;std::coutdiff4 is: diff4std::endl;return 0;
}输出
diff1 is: 1
diff2 is: 1001
diff3 is: 1001608
diff4 is: 10016085042. 等待时间
线程的等待时间
std::this_thread::sleep_for(std::chrono::seconds(1));3. 获取当前时间以及时间转换
获取当前时间
auto nowTime std::chrono::system_clock::now();
std::time_t t std::chrono::system_clock::to_time_t(nowTime);
std::cout nowTime is: std::ctime(t) std::endl; 输出
nowTime is: Fri Jun 9 08:01:18 2023时间转换 在工作中上述的时间不是我们需要的通常用到的时间为string和int类型
类型说明2023-06-09 08:01:18string类型1686297678int64类型秒级10位1686297678549int64类型毫秒级13位1686297678549829int64类型微妙级16位1686297678549829794int64类型纳秒级19位
时间类型的转换
转换类型转换类型time_point - stringtime_point - int64string - time_pointstring - int64int64 - stringint64 - time_point
测试demo
time_conversion.hpp文件的下载地址
/** brief: example about time format conversion by chrono* data: 2023/06/09* complie: g -g main.cc time_conversion.hpp -o d -stdc11* author: guokerenjian* lastEditDate: */#include iostream
#include time_conversion.hppusing namespace t_convert;int main()
{TimeConvert tc;auto nowTime std::chrono::system_clock::now();std::time_t t std::chrono::system_clock::to_time_t(nowTime);std::cout nowTime is: std::ctime(t) std::endl; //1.time_point - stringstd::couttime_point - stringstd::endl;std::string strTime;if(tc.timePointToString(nowTime, strTime)){std::coutstrTime is: strTime\n\n;}else{std::coutfailurestd::endl;} //2.time_point - int64std::couttime_point - int64std::endl;int64_t itime{0};if(tc.timePointToInt64(nowTime, itime, TIME_TYPE::SECOND_TIME)) //秒{std::coutitime is: itime\n; }if(tc.timePointToInt64(nowTime, itime, TIME_TYPE::MILLISSECOND_TIME)) //毫秒{std::coutitime is: itime\n; }if(tc.timePointToInt64(nowTime, itime, TIME_TYPE::MICROSECOND_TIME)) //微妙{std::coutitime is: itime\n; }if(tc.timePointToInt64(nowTime, itime, TIME_TYPE::NANOSECOND_TIME)) //纳秒{std::coutitime is: itime\n\n; } //3.string - time_pointstd::coutstring - time_pointstd::endl;decltype(nowTime) resultTime;if(tc.stringToTimePoint(strTime, resultTime)){std::time_t t_result std::chrono::system_clock::to_time_t(resultTime);std::cout resultTime is: std::ctime(t_result) \n\n;} //4.string - int64std::coutstring - int64std::endl;int64_t time_int{0};if(tc.stringToInt64(strTime, time_int)){std::couttime_int is: time_int\n\n;}//5.int64 - time_pointstd::coutint64 - time_pointstd::endl;decltype(nowTime) resultTimeFromeInt; int64_t time_test{0};if(tc.timePointToInt64(nowTime, time_test, TIME_TYPE::UNKOWN) tc.Int64ToTimePoint(time_test,resultTimeFromeInt)){std::time_t t_result_int std::chrono::system_clock::to_time_t(resultTimeFromeInt);std::cout t_result_int is: std::ctime(t_result_int) \n;}if(tc.timePointToInt64(nowTime, time_test, TIME_TYPE::MILLISSECOND_TIME) tc.Int64ToTimePoint(time_test,resultTimeFromeInt)){std::time_t t_result_int std::chrono::system_clock::to_time_t(resultTimeFromeInt);std::cout t_result_int is: std::ctime(t_result_int) \n;}if(tc.timePointToInt64(nowTime, time_test, TIME_TYPE::MICROSECOND_TIME) tc.Int64ToTimePoint(time_test,resultTimeFromeInt)){std::time_t t_result_int std::chrono::system_clock::to_time_t(resultTimeFromeInt);std::cout t_result_int is: std::ctime(t_result_int) \n;}if(tc.timePointToInt64(nowTime, time_test, TIME_TYPE::NANOSECOND_TIME) tc.Int64ToTimePoint(time_test,resultTimeFromeInt)){std::time_t t_result_int std::chrono::system_clock::to_time_t(resultTimeFromeInt);std::cout t_result_int is: std::ctime(t_result_int) \n\n;}//6.time_point - stringstd::couttime_point - stringstd::endl;std::string str_time_result;if(tc.Int64ToString(time_test, str_time_result)){std::coutstr_time_result is: str_time_resultstd::endl;} return 0;
}