diff options
Diffstat (limited to 'ext/pybind11/include/pybind11/chrono.h')
-rw-r--r-- | ext/pybind11/include/pybind11/chrono.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/ext/pybind11/include/pybind11/chrono.h b/ext/pybind11/include/pybind11/chrono.h index 2b37f56f1..8a41d08b0 100644 --- a/ext/pybind11/include/pybind11/chrono.h +++ b/ext/pybind11/include/pybind11/chrono.h @@ -85,9 +85,11 @@ public: using ss_t = duration<int, std::ratio<1>>; using us_t = duration<int, std::micro>; - return PyDelta_FromDSU(duration_cast<dd_t>(d).count(), - duration_cast<ss_t>(d % days(1)).count(), - duration_cast<us_t>(d % seconds(1)).count()); + auto dd = duration_cast<dd_t>(d); + auto subd = d - dd; + auto ss = duration_cast<ss_t>(subd); + auto us = duration_cast<us_t>(subd - ss); + return PyDelta_FromDSU(dd.count(), ss.count(), us.count()); } PYBIND11_TYPE_CASTER(type, _("datetime.timedelta")); |