其他分享
首页 > 其他分享> > 使用C和Boost获取当前时间(以毫秒为单位)

使用C和Boost获取当前时间(以毫秒为单位)

作者:互联网

在我的线程中(使用boost :: thread)我需要以ms或更少的时间检索当前时间并转换为ms:

实际上,在这里阅读我发现了这个:

tick = boost::posix_time::second_clock::local_time();
now  = boost::posix_time::second_clock::local_time();

似乎工作,但我需要有一个很长的毫秒的现在…

我该怎么做?

解决方法:

您可以使用boost :: posix_time :: time_duration来获取时间范围.就像这样

boost::posix_time::time_duration diff = tick - now;
diff.total_milliseconds();

要获得更高的分辨率,您可以更改正在使用的时钟.例如,对于boost :: posix_time :: microsec_clock,虽然这可能取决于操作系统.例如,在Windows上,boost :: posix_time :: microsecond_clock具有毫秒分辨率,而不是微秒.

一个稍微依赖于硬件的例子.

int main(int argc, char* argv[])
{
    boost::posix_time::ptime t1 = boost::posix_time::second_clock::local_time();
    boost::this_thread::sleep(boost::posix_time::millisec(500));
    boost::posix_time::ptime t2 = boost::posix_time::second_clock::local_time();
    boost::posix_time::time_duration diff = t2 - t1;
    std::cout << diff.total_milliseconds() << std::endl;

    boost::posix_time::ptime mst1 = boost::posix_time::microsec_clock::local_time();
    boost::this_thread::sleep(boost::posix_time::millisec(500));
    boost::posix_time::ptime mst2 = boost::posix_time::microsec_clock::local_time();
    boost::posix_time::time_duration msdiff = mst2 - mst1;
    std::cout << msdiff.total_milliseconds() << std::endl;
    return 0;
}

在我的win7机器上.第一个输出是0或1000.第二个分辨率.
第二个几乎总是500,因为时钟的分辨率更高.我希望帮助一点.

标签:c,timestamp,time,boost,milliseconds
来源: https://codeday.me/bug/20190923/1815205.html