网站建设yankt百度客服人工在线咨询
打印时间精确到毫秒好实现,但是那种对用户可读性不好,更适合开头记一次结尾记一次,打印中间减出来的程序运行时间。
但是因为一些情况,我开多线程开的不方便打印结束时间,同事跟我说那你把开始时间打印一下,结束他自己接受那边打印,最好精确到毫秒。那就要考虑可读性。
试了好多,最后选择用这个
#include <chrono>
#include <ctime>
#include <iostream>template <typename Duration>
void print_time(tm t, Duration fraction) {using namespace std::chrono;std::printf("[%04u-%02u-%02u %02u:%02u:%02u.%03u]\n", t.tm_year + 1900,t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec,static_cast<unsigned>(fraction / milliseconds(1)));// VS2013's library has a bug which may require you to replace// "fraction / milliseconds(1)" with// "duration_cast<milliseconds>(fraction).count()"
}int main() {using namespace std;using namespace std::chrono;system_clock::time_point now = system_clock::now();system_clock::duration tp = now.time_since_epoch();tp -= duration_cast<seconds>(tp);time_t tt = system_clock::to_time_t(now);print_time(*gmtime(&tt), tp);print_time(*localtime(&tt), tp);
}
具体原理我先放放,等有空了再研究
https://www.coder.work/article/798794