Index: Doc/library/datetime.rst =================================================================== --- Doc/library/datetime.rst (revision 59236) +++ Doc/library/datetime.rst (working copy) @@ -266,7 +266,13 @@ efficient pickling, and in Boolean contexts, a :class:`timedelta` object is considered to be true if and only if it isn't equal to ``timedelta(0)``. +Instance methods: +.. method:: timedelta.tosecs() + + Returns the total number of seconds this timedelta object represents. + This is equivalent to (timedelta.days * 3600 * 24) + timedelta.seconds + .. _datetime-date: :class:`date` Objects Index: Lib/test/test_datetime.py =================================================================== --- Lib/test/test_datetime.py (revision 59236) +++ Lib/test/test_datetime.py (working copy) @@ -475,6 +475,11 @@ self.assertEqual(str(t3), str(t4)) self.assertEqual(t4.as_hours(), -1) + def test_tosecs(self): + for s in (100, 1000, 10000000, 100000000000): + td = timedelta(seconds = s) + self.assertEqual(td.tosecs(), s) + ############################################################################# # date tests Index: Modules/datetimemodule.c =================================================================== --- Modules/datetimemodule.c (revision 59236) +++ Modules/datetimemodule.c (working copy) @@ -2058,6 +2058,28 @@ return Py_BuildValue("ON", Py_Type(self), delta_getstate(self)); } +static PyObject * +delta_tosecs(PyDateTime_Delta* self) +{ + PyObject *t1, *t2; + PyObject *days, *secs; + PyObject *retval; + + t1 = PyLong_FromLong(GET_TD_DAYS(self)); + t2 = PyLong_FromLong(3600*24); + days = PyNumber_Multiply(t1, t2); + Py_DECREF(t1); + Py_DECREF(t2); + + secs = PyLong_FromLong(GET_TD_SECONDS(self)); + + retval = PyNumber_Add(days, secs); + Py_DECREF(days); + Py_DECREF(secs); + + return retval; +} + #define OFFSET(field) offsetof(PyDateTime_Delta, field) static PyMemberDef delta_members[] = { @@ -2077,6 +2099,8 @@ {"__reduce__", (PyCFunction)delta_reduce, METH_NOARGS, PyDoc_STR("__reduce__() -> (cls, state)")}, + {"tosecs", (PyCFunction)delta_tosecs, METH_NOARGS, + PyDoc_STR("Total number of seconds represented by this timedelta object.")}, {NULL, NULL}, };