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?
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
today()
der Tag vor der Umstellung auf Sommerzeit liegt und sich das Zeitdelta in die andere Zeitzone erstreckt? Ist dieser Code von Gebietsschemas betroffen?date.today()
wird verwendet, um sowohl positive als auch negative Zeitpläne zu unterstützen.date.min
wü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.time
mit 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/nptimeDie Dokumentation finden Sie unter http://tgs.github.io/nptime/
quelle
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()
quelle
datetime
Modul. 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.
quelle
t == time(23,59)
dann dieser Ansatz nicht funktioniert. Wenn Sie hinzufügen1
, erhaltent.hour
SieValueError: hour must be in 0..23
datetime.timedelta(days=1)
einem Datum / Uhrzeit-Objekt einen Tag hinzufügen. Sie vermeiden Debug-Land.Sie können time () in now () ändern, damit es funktioniert
from datetime import datetime, timedelta datetime.now() + timedelta(hours=1)
quelle