gpt4 book ai didi

c++ - boost::posix_time::microsec_clock 以微秒分辨率加倍秒

转载 作者:行者123 更新时间:2023-11-30 03:31:05 26 4
gpt4 key购买 nike

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

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当需要相对于当天开始的时间戳时,'s 的答案是一个很好的简化。


我不知道库中的现有函数是否可以完全满足您的要求,但借助文档的帮助,只需几行即可轻松提出您自己的函数。

从表示纪元的 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 以微秒分辨率加倍秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44488815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com