我试图在整个互联网上找到答案。我需要以微秒为单位的秒级时间戳。

boost::posix_time::ptime now = boost::posix_time::microsec_clock::local_time();
// not really getting any further here
double now_seconds = 0; // a value like 12345.123511, time since epoch in seconds with usec precision

更新:

将当天的开始用作纪元即24小时时间戳就足够了。

最佳答案

N.B. 此答案提供了一种通用方法,该方法允许任意时期,因为它是在更新之前编写的。当需要相对于当天开始的时间戳时,fonZ的答案是一个很好的简化。

我不知道该库中的现有功能可以完全满足您的要求,但是在文档的帮助下,只需几行即可轻松实现自己的功能。

从代表时期的ptime中减去ptime,以获得代表从纪元开始经过的时间的 time_duration time_duration类提供total_microseconds()。适当缩放结果以获取秒数。

代码样例

#include <boost/date_time/local_time/local_time.hpp>
#include <boost/date_time/posix_time/ptime.hpp>
#include <boost/format.hpp>
#include <iostream>

double seconds_from_epoch(boost::posix_time::ptime const& t)
{
    boost::posix_time::ptime const EPOCH(boost::gregorian::date(1970,1,1));
    boost::posix_time::time_duration delta(t - EPOCH);
    return (delta.total_microseconds() / 1000000.0);
}


int main()
{
    boost::posix_time::ptime now(boost::posix_time::microsec_clock::local_time());
    std::cout << boost::format("%0.6f\n") % seconds_from_epoch(now);
    return 0;
}

Sample on Coliru

控制台输出:
1497218065.918929

关于c++ - 以微秒为单位将boost::posix_time::microsec_clock boost 到几秒钟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44488815/

10-11 22:00