1

我正在尝试为 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 添加或减去持续时间?

4

1 回答 1

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 微秒)的精度,那么nowoffline_mark_time可能相等,因此program_start_time在这种情况下将添加 0。

于 2013-06-16T21:23:34.080 回答