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?
Related:
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
The solution is in the link that you provided in your question:
datetime.combine(date.today(), time()) + timedelta(hours=1)
Full example:
from datetime import date, datetime, time, timedelta dt = datetime.combine(date.today(), time(23, 55)) + timedelta(minutes=30) print dt.time()
Output:
00:25:00
Method 2
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/
Method 3
Workaround:
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.
Method 4
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()
Method 5
You can change time() to now() for it to work
from datetime import datetime, timedelta datetime.now() + timedelta(hours=1)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0