[英]How the time_point created with different duration(std::chrono::milliseconds and std::chrono::nanoseconds) is so different
[英]std::chrono, adding duration to time_point
我试图在Qt(C ++ 11 / MinGW)中的time_point添加一些持续时间,但遇到了麻烦:
初始化(程序启动时):
auto program_start_time = std::chrono::system_clock::now();
auto offline_time = std::chrono::system_clock::now();
...
一些活动离线:
offline_mark_time = std::chrono::system_clock::now();
...
活动恢复后,我需要将离线时间添加到我的开始时间中:
auto now = std::chrono::system_clock::now();
program_start_time += (now - offline_mark_time); // <- Does not seem to work
即使编译和执行都可以,但程序的行为就像我要添加零。
您如何在time_point上增加或减少持续时间?
这个完整的程序基于您的答案中的代码片段:
#include <iostream>
#include <thread>
#include <chrono>
int
main()
{
auto program_start_time = std::chrono::system_clock::now();
auto copy_of_program_start_time = program_start_time;
auto offline_mark_time = std::chrono::system_clock::now();
std::this_thread::sleep_for(std::chrono::microseconds(100));
auto now = std::chrono::system_clock::now();
program_start_time += (now - offline_mark_time);
std::cout << (program_start_time > copy_of_program_start_time) << '\n';
}
对我来说打印出来:
1
如果从构造offline_mark_time
到now
持续时间小于system_clock::duration
的精度(对我来说是1微秒),则now
和offline_mark_time
可能相等,因此在这种情况下,会将0添加到program_start_time
中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.