Le 19/01/12 19:49, Matthew Jenks a écrit :
Hello,
I have been trying to find in the boost libraries if there are any
interoperability functions for Boost::Chrono and Boost::Posix_Time?
Does anyone know if they exist and what class they are in?
Hi,
no, there aren't.
You can get them from
https://svn.boost.org/svn/boost/sandbox/conversion/boost/conversion/boost/ch...
and
https://svn.boost.org/svn/boost/sandbox/conversion/boost/conversion/boost/ch....
Of course, you should extract the code from to be independent of the
proposed library TBoost.Conversion reviewed but without review results yet.
template< typename Rep, typename Period>
posix_time::time_duration operator()(chrono::duration const& from)
{
typedef chrono::duration src_duration_t;
typedef chrono::nanoseconds duration_t;
typedef duration_t::rep rep_t;
rep_t d = chrono::duration_cast(from).count();
rep_t sec = d/1000000000;
rep_t nsec = d%1000000000;
return posix_time::seconds(static_cast<long long>(sec))+
#ifdef BOOST_DATE_TIME_HAS_NANOSECONDS
posix_time::nanoseconds(nsec);
#else
posix_time::microseconds((nsec+500)/1000);
#endif
}
template< typename Duration>
posix_time::ptime operator()(const chrono::time_point& from)
{
typedef chrono::time_point time_point_t;
typedef chrono::nanoseconds duration_t;
typedef duration_t::rep rep_t;
rep_t d = chrono::duration_cast(from.time_since_epoch()).count();
rep_t sec = d/1000000000;
rep_t nsec = d%1000000000;
return posix_time::from_time_t(0)+
posix_time::seconds(static_cast<long>(sec))+
#ifdef BOOST_DATE_TIME_HAS_NANOSECONDS
posix_time::nanoseconds(nsec);
#else
posix_time::microseconds((nsec+500)/1000);
#endif
}
HTH,
Vicente