I’m trying to do something like this:
time() + timedelta(hours=1)
however, Python doesn’t allow it, apparently for good reason.
Does anyone have a simple work around?
The solution is in the link that you provided in your question:
datetime.combine(date.today(), time()) + timedelta(hours=1)
from datetime import date, datetime, time, timedelta dt = datetime.combine(date.today(), time(23, 55)) + timedelta(minutes=30) print dt.time()
If it’s worth adding another file / dependency to your project, I’ve just written a tiny little class that extends
datetime.time with the ability to do arithmetic. If you go past midnight, it just wraps around:
>>> from nptime import nptime >>> from datetime import timedelta >>> afternoon = nptime(12, 24) + timedelta(days=1, minutes=36) >>> afternoon nptime(13, 0) >>> str(afternoon) '13:00:00'
It’s available from PyPi as
nptime (“non-pedantic time”), or on GitHub: https://github.com/tgs/nptime
The documentation is at http://tgs.github.io/nptime/
This is a bit nasty, but:
from datetime import datetime, timedelta now = datetime.now().time() # Just use January the first, 2000 d1 = datetime(2000, 1, 1, now.hour, now.minute, now.second) d2 = d1 + timedelta(hours=1, minutes=23) print d2.time()
t = time() t2 = time(t.hour+1, t.minute, t.second, t.microsecond)
You can also omit the microseconds, if you don’t need that much precision.
You can change time() to now() for it to work
from datetime import datetime, timedelta datetime.now() + timedelta(hours=1)