我运行一个简单的程序在那里,我采取了time_point
与system_clock::now
然后this_thread::sleep_for(seconds(1))
并再次time_point
与system_clock::now
。怪异的结果与标准::时辰:: duration_cast 1秒秒和2秒
现在,如果我在第一个time_point
上添加一些额外的duration
,它会在1秒和2秒内给出完全相同的结果!
这里是demo code:
#include<iostream>
#include<chrono>
#include<thread>
using namespace std;
void CheckDuration (std::chrono::duration<int> seconds)
{
auto start = std::chrono::system_clock::now() + seconds;
std::this_thread::sleep_for(std::chrono::seconds(1));
auto stop = std::chrono::system_clock::now();
cout << "Difference = " << std::chrono::duration_cast<std::chrono::seconds>(stop-start).count() << endl;
}
int main()
{
CheckDuration(std::chrono::duration<int>(0)); // Difference = 1
CheckDuration(std::chrono::duration<int>(1)); // Difference = 0
CheckDuration(std::chrono::duration<int>(2)); // Difference = 0 <=== ???
CheckDuration(std::chrono::duration<int>(3)); // Difference = -1
}