Python's strftime implementation does strange things with the year,

such that the datetime tests failed if the envar PYTHON2K was set.
This is an utter mess, and the datetime module's strftime functions
inherit it.  I suspect that, regardless of the PYTHON2K setting, and
regardless of platform limitations, the datetime strftime wrappers
will end up delivering nonsense results (or bogus exceptions) for
any year before 1900.  I should probably just refuse to accept years
earlier than that -- else we'll have to implement strftime() by hand.
This commit is contained in:
Tim Peters 2002-12-22 20:34:46 +00:00
parent 14b6941197
commit 83b85f1d6c
1 changed files with 5 additions and 1 deletions

View File

@ -3518,8 +3518,12 @@ time_strftime(PyDateTime_Time *self, PyObject *args, PyObject *kw)
&PyString_Type, &format)) &PyString_Type, &format))
return NULL; return NULL;
/* Python's strftime does insane things with the year part of the
* timetuple. The year is forced to (the otherwise nonsensical)
* 1900 to worm around that.
*/
tuple = Py_BuildValue("iiiiiiiii", tuple = Py_BuildValue("iiiiiiiii",
0, 0, 0, /* year, month, day */ 1900, 0, 0, /* year, month, day */
TIME_GET_HOUR(self), TIME_GET_HOUR(self),
TIME_GET_MINUTE(self), TIME_GET_MINUTE(self),
TIME_GET_SECOND(self), TIME_GET_SECOND(self),