Ich versuche so etwas zu tun:
time() + timedelta(hours=1)
jedoch Python nicht erlaubt es , offenbar aus gutem Grund.
Hat jemand eine einfache Lösung?
Ich versuche so etwas zu tun:
time() + timedelta(hours=1)
jedoch Python nicht erlaubt es , offenbar aus gutem Grund.
Hat jemand eine einfache Lösung?
Antworten:
Die Lösung finden Sie in dem Link, den Sie in Ihrer Frage angegeben haben:
datetime.combine(date.today(), time()) + timedelta(hours=1)
Vollständiges Beispiel:
from datetime import date, datetime, time, timedelta
dt = datetime.combine(date.today(), time(23, 55)) + timedelta(minutes=30)
print dt.time()
Ausgabe:
00:25:00
date.today()wird verwendet, um sowohl positive als auch negative Zeitpläne zu unterstützen. date.minwürde für positive Zeitpläne arbeiten.
datetime.MAXYEAR, dass 9999 in 9999 bleiben wird.
Wenn es sich lohnt, Ihrem Projekt eine weitere Datei / Abhängigkeit hinzuzufügen, habe ich gerade eine kleine Klasse geschrieben, die sich datetime.timemit der Fähigkeit zum Rechnen erweitert. Wenn Sie nach Mitternacht gehen, dreht es sich nur um:
>>> 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'
Es ist bei PyPi als nptime("nicht pedantische Zeit") oder auf GitHub erhältlich: https://github.com/tgs/nptime
Die Dokumentation finden Sie unter http://tgs.github.io/nptime/
Das ist ein bisschen böse, aber:
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()
datetimeModul. Andernfalls müssten Überlauffehler und dergleichen manuell behandelt werden.
Problemumgehung:
t = time()
t2 = time(t.hour+1, t.minute, t.second, t.microsecond)
Sie können die Mikrosekunden auch weglassen, wenn Sie nicht so viel Präzision benötigen.
t == time(23,59)dann dieser Ansatz nicht funktioniert. Wenn Sie hinzufügen 1, erhalten t.hourSieValueError: hour must be in 0..23
datetime.timedelta(days=1)einem Datum / Uhrzeit-Objekt einen Tag hinzufügen. Sie vermeiden Debug-Land.
today()der Tag vor der Umstellung auf Sommerzeit liegt und sich das Zeitdelta in die andere Zeitzone erstreckt? Ist dieser Code von Gebietsschemas betroffen?