我想在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中添加或减去持续时间?
答案 0 :(得分:1)
这个完整的程序,基于答案中的代码片段:
#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
和{{ 1}}可能是相等的,因此在这种情况下0将被添加到offline_mark_time
。