C++11 std::chrono,将持续时间添加到时间点

C++11 std::chrono,将持续时间添加到时间点,c++11,duration,chrono,system-clock,C++11,Duration,Chrono,System Clock,我试图在Qt(C++11/MinGW)中为时间点添加一些持续时间,但遇到了以下问题: 初始化(程序启动时): 某些活动脱机: offline_mark_time = std::chrono::system_clock::now(); 活动恢复后,我需要将脱机时间添加到开始时间: auto now = std::chrono::system_clock::now(); program_start_time += (now - offline_mark_time); // <- Doe

我试图在Qt(C++11/MinGW)中为时间点添加一些持续时间,但遇到了以下问题:

初始化(程序启动时):

某些活动脱机:

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
auto now=std::chrono::system_clock::now();

程序_开始_时间+=(现在-脱机_标记_时间);// 此完整程序基于您答案中的代码片段:

#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微秒),然后
now
offline\u mark\u time
很可能相等,因此在这种情况下,0将添加到
program\u start\u time

此完整程序基于您答案中的代码片段:

#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微秒),然后
now
offline\u mark\u time
可能相等,因此在这种情况下,0将添加到
program\u start\u time

1