Backport time_point to python convertor. Fix bindings returning invalid date from time_point convertor
This commit is contained in:
parent
de30f357b3
commit
4492cada4a
|
@ -5,6 +5,7 @@
|
||||||
#include "boost_python.hpp"
|
#include "boost_python.hpp"
|
||||||
#include <boost/date_time/posix_time/posix_time_types.hpp>
|
#include <boost/date_time/posix_time/posix_time_types.hpp>
|
||||||
#include "optional.hpp"
|
#include "optional.hpp"
|
||||||
|
#include <boost/chrono.hpp>
|
||||||
#include <boost/version.hpp>
|
#include <boost/version.hpp>
|
||||||
#include "libtorrent/time.hpp"
|
#include "libtorrent/time.hpp"
|
||||||
|
|
||||||
|
@ -55,6 +56,33 @@ struct time_duration_to_python
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct time_point_to_python
|
||||||
|
{
|
||||||
|
static PyObject* convert(lt::time_point tpt)
|
||||||
|
{
|
||||||
|
object result;
|
||||||
|
if (tpt > lt::min_time()) {
|
||||||
|
time_t const tm = boost::chrono::system_clock::to_time_t(boost::chrono::system_clock::now()
|
||||||
|
+ boost::chrono::duration_cast<boost::chrono::system_clock::duration>(tpt - lt::clock_type::now()));
|
||||||
|
|
||||||
|
std::tm* date = std::localtime(&tm);
|
||||||
|
result = datetime_datetime(
|
||||||
|
(int)1900 + date->tm_year
|
||||||
|
// tm use 0-11 and we need 1-12
|
||||||
|
, (int)date->tm_mon + 1
|
||||||
|
, (int)date->tm_mday
|
||||||
|
, date->tm_hour
|
||||||
|
, date->tm_min
|
||||||
|
, date->tm_sec
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
result = object();
|
||||||
|
}
|
||||||
|
return incref(result.ptr());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct ptime_to_python
|
struct ptime_to_python
|
||||||
{
|
{
|
||||||
static PyObject* convert(boost::posix_time::ptime const& pt)
|
static PyObject* convert(boost::posix_time::ptime const& pt)
|
||||||
|
@ -87,6 +115,11 @@ void bind_datetime()
|
||||||
, time_duration_to_python
|
, time_duration_to_python
|
||||||
>();
|
>();
|
||||||
|
|
||||||
|
to_python_converter<
|
||||||
|
lt::time_point
|
||||||
|
, time_point_to_python
|
||||||
|
>();
|
||||||
|
|
||||||
to_python_converter<
|
to_python_converter<
|
||||||
boost::posix_time::ptime
|
boost::posix_time::ptime
|
||||||
, ptime_to_python
|
, ptime_to_python
|
||||||
|
|
Loading…
Reference in New Issue