Genügend Haken hat das allerdings immer noch. Wenn der Zeitraum nicht übers Jahresende geht, sondern andersrum - also der Endmonat größer ist als der Anfangsmonat, klappt es nicht mehr
Ach, und wann genau passiert das?
Wenn man einen Zeitraum im "Winter", von Oktober bis März nehmen will?
Genau, nie.
Also denk du noch einmal nach, wie man das am einfachsten realisiert. Und zwar so, das es möglichst einfach umzusetzten ist.
Du siehst ja an deinem Code, was man für ein Gekasper machen muss. Zwei Zeiträume definieren, wenn es übers Jahresende lappt. Schaltjahr gesondert berücksichtigen, Tupel in Schleifen prüfen. ... Und was, wenn der gewünschte Zeitraum wirklich nur bis zum 28.2. gehen soll? Dann nimmt dein Code den 29. noch mit...
Als wenn deine Codebeschreibung in
Alles anzeigendatum = datetime.now() # aktuelles Datum
jahr = datum.year # aktuelles Jahr ermitteln
anf = ... (jahr; 4, 1) # Zeitstempel aus dem aktuellen Jahr und den Start-/Endzeiten basteln
end = ... (jahr, 10, 1)
if ! (anf <= datum < end)... # Vergleich gültig für das aktuelle Jahr - deshalb jedes mal der Kram obendrüber
Da finde ich sowas wie
! (401 <= datetime.now().month * 10 + datetime.now().day < 1001)
einfacher wäre.
Warum nicht einfach mit Zahlen rechnen, die einen einfachen Größenvergleich zulassen?
Oder ist es dir zu primitiv, zwei Zahlen miteinander zu vergleichen?
Übrigens:
Die Berücksichtigung einen Schaltjahres ist immer dabei. Bei jeder Formel, die man in diesem Programm unterbringen will