Message154811
| Author |
vstinner |
| Recipients |
belopolsky, georg.brandl, gregory.p.smith, vstinner |
| Date |
2012年03月03日.00:10:18 |
| SpamBayes Score |
1.3296507e-06 |
| Marked as misclassified |
No |
| Message-id |
<1330733422.24.0.352066771242.issue14180@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
There are various ways to convert a Python int/float to a C time_t, timeval or timespec structure. Attached patch factorize code by adding functions to convert a Python object to a C type (time_t, timeval or timespec).
My patch changes how datetime rounds microsecond: round towards zero instead of rounding to nearest with ties going away from zero. I chose this rounding method because it is the method used by int(float) and int(time.time()) is a common in programs (more than round(time.time()). Rounding towards zero avoids also producing timestamps in the future.
On overflow, an OverflowError is now raises instead of a ValueError. I prefer OverflowError over ValueError because it is an implementation detail. For example, time_t is 32 bits on Linux 32 bits, 64 bits on Linux 64 bits or on Windows (32 or 64 bits).
PyTime_ObjectToXXX() functions are part of Python and so can be used by the posix, time, datetime and select modules. The patch removes _time.c, _time.h and timefunc.h because these files were only used for one function (_PyTime_DoubleToTime_t) which is no more used and it required to link a module to _time.c to get this function.
--
If it is a problem to replace ValueError with OverflowError for backward compatibility, it is easy to adapt the patch to raise ValueError instead.
timedelta*float and timedelta/float rounding method may also be changed. |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2012年03月03日 00:10:24 | vstinner | set | recipients:
+ vstinner, georg.brandl, gregory.p.smith, belopolsky |
| 2012年03月03日 00:10:22 | vstinner | set | messageid: <1330733422.24.0.352066771242.issue14180@psf.upfronthosting.co.za> |
| 2012年03月03日 00:10:21 | vstinner | link | issue14180 messages |
| 2012年03月03日 00:10:21 | vstinner | create |
|