Close #14180: Factorize code to convert a number of seconds to time_t, timeval or timespec
time.ctime(), gmtime(), time.localtime(), datetime.date.fromtimestamp(),
datetime.datetime.fromtimestamp() and datetime.datetime.utcfromtimestamp() now
raises an OverflowError, instead of a ValueError, if the timestamp does not fit
in time_t.
datetime.datetime.fromtimestamp() and datetime.datetime.utcfromtimestamp() now
round microseconds towards zero instead of rounding to nearest with ties going
away from zero.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 6ebd3ef..efebd49 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -1,7 +1,6 @@
/* Time module */
#include "Python.h"
-#include "_time.h"
#include <ctype.h>
@@ -288,11 +287,7 @@
whent = time(NULL);
}
else {
- double d = PyFloat_AsDouble(ot);
- if (PyErr_Occurred())
- return 0;
- whent = _PyTime_DoubleToTimet(d);
- if (whent == (time_t)-1 && PyErr_Occurred())
+ if (_PyTime_ObjectToTime_t(ot, &whent) == -1)
return 0;
}
*pwhen = whent;