std :: chrono,将持续时间添加到time_point

时间:2013-05-15 22:29:28

标签: c++11 duration chrono system-clock

我想在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中添加或减去持续时间?

1 个答案:

答案 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_timenow的构建之间的持续时间小于system_clock::duration的精度(对我来说是1微秒),那么now和{{ 1}}可能是相等的,因此在这种情况下0将被添加到offline_mark_time