我试图在整个互联网上找到答案。我需要以微秒为单位的秒级时间戳。
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/