繁体   English   中英

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

[英]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_timenow持续时间小于system_clock::duration的精度(对我来说是1微秒),则nowoffline_mark_time可能相等,因此在这种情况下,会将0添加到program_start_time中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM