2013-05-15 33 views
1

我想一些时间添加到time_point Qt中(C++ 11/MinGW的),我有麻烦:的std ::时辰,增加持续时间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?

回答

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_timenow建设之间的持续时间比较的system_clock::duration(1微秒为我)的精度要求不高,然后nowoffline_mark_time将可能是相等,因此0将被添加到program_start_time在那种情况下。

相关问题