Я пытаюсь сделать что-то вроде этого:
time() + timedelta(hours=1)
однако, Python не позволяет это , очевидно, по уважительной причине.
У кого-нибудь есть простое решение?
Решение в ссылке, которую вы указали в вашем вопросе:
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()
Выход:
00:25:00
Если стоит добавить еще один файл / зависимость в ваш проект, я только что написал крошечный маленький класс, который расширяет datetime.time с возможностью делать арифметику. Если вы идете после полуночи, это просто оборачивается:
datetime.time
>>> 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'
Он доступен из PyPi как nptime («непедантичное время») или на GitHub: https://github.com/tgs/nptime
nptime
Документация на http://tgs.github.io/nptime/
Это немного неприятно, но:
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)
Вы также можете опустить микросекунды, если вам не нужна большая точность.
Вы можете изменить время () на сейчас (), чтобы оно работало
from datetime import datetime, timedelta datetime.now() + timedelta(hours=1)