67 constexpr static const char* py_typing =
"datetime.timedelta";
69 using TDuration = std::chrono::duration<Rep, Period>;
71 static PyObject* build(TDuration v)
73 using namespace std::chrono;
74 using TDays = duration<int, std::ratio<86400>>;
75 using TSeconds = duration<int>;
76 using TMicroSeconds = duration<num::Tint64, std::micro>;
78 TMicroSeconds usecs = duration_cast<TMicroSeconds>(v);
79 const TDays days = duration_cast<TDays>(usecs);
81 const TSeconds secs = duration_cast<TSeconds>(usecs);
84 return impl::buildTimedelta(days.count(), secs.count(),
static_cast<int>(usecs.count()));
86 static int get(PyObject* obj, TDuration& v)
88 using namespace std::chrono;
89 using TDays = duration<int, std::ratio<86400>>;
91 int days, secs, usecs;
92 if (impl::getTimedelta(obj, days, secs, usecs) != 0)
96 v = duration_cast<TDuration>(TDays(days)) +
97 duration_cast<TDuration>(seconds(secs)) +
98 duration_cast<TDuration>(microseconds(usecs));
115 constexpr static const char* py_typing =
"datetime.datetime";
116 constexpr static const char* py_typing_preamble =
"import datetime";
118 using TClock = std::chrono::system_clock;
119 using TDuration = TClock::duration;
120 using TTimePoint = std::chrono::time_point<TClock>;
121 LASS_PYTHON_DLL
static PyObject* build(
const TTimePoint& v);
122 LASS_PYTHON_DLL
static int get(PyObject* obj, TTimePoint& v);