簡體   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