![](/img/trans.png)
[英]How the time_point created with different duration(std::chrono::milliseconds and std::chrono::nanoseconds) is so different
[英]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_time
到now
持續時間小於system_clock::duration
的精度(對我來說是1微秒),則now
和offline_mark_time
可能相等,因此在這種情況下,會將0添加到program_start_time
中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.