diff options
author | Victor Stinner <vstinner@wyplay.com> | 2012-03-13 12:35:55 (GMT) |
---|---|---|
committer | Victor Stinner <vstinner@wyplay.com> | 2012-03-13 12:35:55 (GMT) |
commit | 5d272cc6a28f3600a6c5ab3ea0ceea94f2285f35 (patch) | |
tree | 13726571347da753ab494dc42cff7055d1bc96a2 /Include | |
parent | 3cac309939378f806daa3459afde0908267b070a (diff) | |
download | cpython-5d272cc6a28f3600a6c5ab3ea0ceea94f2285f35.zip cpython-5d272cc6a28f3600a6c5ab3ea0ceea94f2285f35.tar.gz cpython-5d272cc6a28f3600a6c5ab3ea0ceea94f2285f35.tar.bz2 |
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.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/pytime.h | 17 | ||||
-rw-r--r-- | Include/timefuncs.h | 25 |
2 files changed, 15 insertions, 27 deletions
diff --git a/Include/pytime.h b/Include/pytime.h index 2ea64c9..0473dc7 100644 --- a/Include/pytime.h +++ b/Include/pytime.h @@ -39,9 +39,22 @@ do { \ (tv_end.tv_usec - tv_start.tv_usec) * 0.000001) #ifndef Py_LIMITED_API +/* Convert a number of seconds, int or float, to time_t. */ +PyAPI_FUNC(int) _PyTime_ObjectToTime_t( + PyObject *obj, + time_t *sec); + +/* Convert a number of seconds, int or float, to a timeval structure. + usec is in the range [0; 999999] and rounded towards zero. + For example, -1.2 is converted to (-2, 800000). */ +PyAPI_FUNC(int) _PyTime_ObjectToTimeval( + PyObject *obj, + time_t *sec, + long *usec); + /* Convert a number of seconds, int or float, to a timespec structure. - nsec is always in the range [0; 999999999]. For example, -1.2 is converted - to (-2, 800000000). */ + nsec is in the range [0; 999999999] and rounded towards zero. + For example, -1.2 is converted to (-2, 800000000). */ PyAPI_FUNC(int) _PyTime_ObjectToTimespec( PyObject *obj, time_t *sec, diff --git a/Include/timefuncs.h b/Include/timefuncs.h deleted file mode 100644 index 3c43575..0000000 --- a/Include/timefuncs.h +++ /dev/null @@ -1,25 +0,0 @@ -/* timefuncs.h - */ - -/* Utility function related to timemodule.c. */ - -#ifndef TIMEFUNCS_H -#define TIMEFUNCS_H -#ifdef __cplusplus -extern "C" { -#endif - - -/* Cast double x to time_t, but raise ValueError if x is too large - * to fit in a time_t. ValueError is set on return iff the return - * value is (time_t)-1 and PyErr_Occurred(). - */ -#ifndef Py_LIMITED_API -PyAPI_FUNC(time_t) _PyTime_DoubleToTimet(double x); -#endif - - -#ifdef __cplusplus -} -#endif -#endif /* TIMEFUNCS_H */ |