C++ :: Boost :: posix_time(经过的秒数.经过的小数秒)

4 c++

我试图找到两个一开始看起来并不难的问题的答案.Q1:如何获取UTC.Now()和给定日期之间经过的秒数?A1:就像下面的代码一样!Q2:如何确定自上一次"完整"秒后经过的小数秒数?我想打印"total_elapsed_seconds.fractional_seconds" - >"1234124.45".我怎么做?A2 : ???

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

using namespace std;
using namespace boost::gregorian;
using namespace boost::posix_time; 

void main()
{
    ptime Jan1st1970(date(1970, 1, 1));
    for(int i = 0; i < 10; i++)
    {
        ptime Now = second_clock::universal_time();
        time_duration diff = Now - Jan1st1970;
        cout << Now << " : " << diff.total_seconds() << "." << diff.fractional_seconds() << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

zda*_*dan 8

您正在使用它second_clock来获取当前时间.顾名思义,它仅精确到最接近的秒.由于您的参考时间没有小数秒,因此持续时间小数秒始终为0.使用microsec_clock相反:

ptime Now = microsec_clock::universal_time();
Run Code Online (Sandbox Code Playgroud)

此外,在这样一个紧凑的循环中,我不希望时钟在每次迭代时更新,所以你可能还想从boost :: thread添加一个sleep:

boost::this_thread::sleep(boost::posix_time::milliseconds(25));
Run Code Online (Sandbox Code Playgroud)