gpt4 book ai didi

c++ - boost::date_time 和 std::chrono 之间的互操作性

转载 作者:IT老高 更新时间:2023-10-28 21:35:53 26 4
gpt4 key购买 nike

boost::date_time 和 std::chrono 的互操作性如何?

例如,有没有办法在 boost::posix_time::ptime 和 std::chrono::time_point 之间进行转换?

我尝试搜索有关此类转换的文档,但找不到任何文档。

最佳答案

我在 boost 提交邮件列表中找到了这个:http://lists.boost.org/boost-commit/2009/04/15209.php

以下是相关功能:

template < class Clock, class Duration> 
struct convert_to<posix_time::ptime, chrono::time_point<Clock, Duration> > {
inline static posix_time::ptime apply(const chrono::time_point<Clock, Duration>& from)
{
typedef chrono::time_point<Clock, Duration> time_point_t;
typedef chrono::nanoseconds duration_t;
typedef duration_t::rep rep_t;
rep_t d = chrono::duration_cast<duration_t>(from.time_since_epoch()).count();
rep_t sec = d/1000000000;
rep_t nsec = d%1000000000;
return boost::posix_time::from_time_t(0)+
boost::posix_time::seconds(static_cast<long>(sec))+
#ifdef BOOST_DATE_TIME_HAS_NANOSECONDS
boost::posix_time::nanoseconds(nsec);
#else
boost::posix_time::microseconds((nsec+500)/1000);
#endif
}
};

template < class Clock, class Duration>
struct convert_to<chrono::time_point<Clock, Duration>, posix_time::ptime> {
inline static chrono::time_point<Clock, Duration> apply(const posix_time::ptime& from)
{
boost::posix_time::time_duration const time_since_epoch=from-boost::posix_time::from_time_t(0);
chrono::time_point<Clock, Duration> t=chrono::system_clock::from_time_t(time_since_epoch.total_seconds());
long nsec=time_since_epoch.fractional_seconds()*(1000000000/time_since_epoch.ticks_per_second());
return t+chrono::nanoseconds(nsec);

}
};

我不确定它们何时会成为 boost 版本的一部分。他们现在似乎不在 boost 后备箱中......

关于c++ - boost::date_time 和 std::chrono 之间的互操作性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910373/

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