我正在尝试生成一个微秒级别的时间戳。 我尝试使用这个答案(从C ++中std :: chrono :: time_point提取年/月/日等)和这个答案:(带有毫秒的C ++ 11实际系统时间),但我不确定是否正确:
template <typename Duration>
void print_time(tm t, Duration fraction) {
using namespace std::chrono;
std::printf("[%04u-%02u-%02u %02u:%02u:%02u.%03u.%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)),
static_cast<unsigned>(fraction / microseconds(1)));
}
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);
cout << tp.count() <<endl;
print_time(*gmtime(&tt), tp);
print_time(*localtime(&tt), tp);
这段代码的输出结果为:
324760155 [2019年9月15日 10:09:13.324.324760] [2019年9月15日 10:09:13.324.324760]
std::chrono::time_point<std::chrono::system_clock> start, end; std::chrono::system_clock::duration elapsed; start = std::chrono::system_clock::now(); /*主程序循环*/ elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end-start); //现在我们有了花费的微秒数
<br>根据微秒数命名,我们可以将它们除以每小时的微秒数,得到小时数/每分钟 - 得到分钟数/每秒。您只需要记住减去已经得到的结果即可。 - Silerus