Próbuję zrobić coś takiego:
time() + timedelta(hours=1)
jednak Python na to nie pozwala , najwyraźniej nie bez powodu.
Czy ktoś ma jakieś proste obejście?
Próbuję zrobić coś takiego:
time() + timedelta(hours=1)
jednak Python na to nie pozwala , najwyraźniej nie bez powodu.
Czy ktoś ma jakieś proste obejście?
Rozwiązanie znajduje się w linku, który podałeś w swoim pytaniu:
datetime.combine(date.today(), time()) + timedelta(hours=1)
Pełny przykład:
from datetime import date, datetime, time, timedelta
dt = datetime.combine(date.today(), time(23, 55)) + timedelta(minutes=30)
print dt.time()
Wynik:
00:25:00
today()
minie dzień przed przełączeniem na czas letni, a okres czasu rozciąga się na inną strefę czasową? Czy na ten kod mają wpływ ustawienia regionalne?date.today()
służy do wspierania zarówno pozytywnych, jak i negatywnych strategii czasowych.date.min
działałyby na pozytywne czasy.datetime.MAXYEAR
że pozostanie 9999 w 9999.Jeśli warto dodać kolejny plik / zależność do swojego projektu, właśnie napisałem małą małą klasę, która rozszerza się
datetime.time
o możliwość wykonywania arytmetyki. Jeśli miniesz północ, po prostu się zawija:>>> 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'
Jest dostępny w PyPi jako
nptime
(„czas niepedantyczny ”) lub na GitHub: https://github.com/tgs/nptimeDokumentacja jest dostępna pod adresem http://tgs.github.io/nptime/
źródło
To trochę paskudne, ale:
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()
źródło
datetime
modułu. W przeciwnym razie wymagałoby ręcznej obsługi błędów przepełnienia.Obejście:
t = time() t2 = time(t.hour+1, t.minute, t.second, t.microsecond)
Możesz także pominąć mikrosekundy, jeśli nie potrzebujesz tak dużej precyzji.
źródło
t == time(23,59)
wtedy to podejście nie zadziała. Kiedy dodasz1
dot.hour
, otrzymaszValueError: hour must be in 0..23
datetime.timedelta(days=1)
aby dodać dzień do obiektu datetime. Unikniesz debugowania ziemi.Możesz zmienić czas () na teraz (), aby działał
from datetime import datetime, timedelta datetime.now() + timedelta(hours=1)
źródło