Adding timedelta to a datetime.time

June 26, 2014

One of Python's strengths is its exhaustive library. And date and time management is an integral part of this, provided by the datetime.

Logic suggests that timedelta. That is code like this would produce an error:

>>> from datetime import datetime, date, time, timedelta
>>> dt1 = datetime.now()
>>> td1 = timedelta(hours=1)
>>> dt1 + td1
datetime.datetime(2014, 6, 26, 15, 38, 27, 149200) # OK
>>> dt1.time()+td1
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'

So how do you add (or subtract) a timedelta(or date) object? It turns out that a slightly convoluted way exists. Given a time object t1 and timedelta object td1, the following code does the trick.

>>> (datetime.combine(datetime.now().date(), t1)+td1).time()
datetime.time(15, 40, 55, 672503)

There is probably a shorter and better way to accomplish, but at the moment this is what I could come up with.