Hyperion hat geschrieben:... insbesondere wieso man da etwas prüfen muss / will.
Nun ja, wenn ein Termin, der z. B. an einem 01.10.2010 zum ersten mal auftaucht, sich dann alle 2 Jahre am 15. und 16. März wiederholen soll, dann soll meine Abfrage prüfen, ob sich z. B. am 15.03.2012 so eine Wiederholung befindet. Dazu prüfe ich eben zuerst, ob sich das Jahr 2012 überhaupt im richtigen Interval befindet, ob der März passt und zuletzt auch noch der 15. Tag ein 'Juhu' auslöst:
Code: Alles auswählen
def yearly(self, date):
if self.check_year_interval(date):
if date.weekday() in self.weekdays and \
weekday_count(date) in self.weekday_counts:
return self.check_month_interval(date)
elif date.day in self.days:
return self.check_month_interval(date)
else:
return False
In self.weekdays befinden sich Angaben zu Wochentagen (0 - 6), da es ja auch Wiederholungen wie "Jedes 2. Jahr am 3. Montag im März" gibt, in self.weekday_counts liegen demnach die Wochen (0 - 4). In self.days werden dagegen die fortlaufenden Tage (0 - 31) abgelegt.
lunar hat geschrieben:... wenn Du weiterhin vor allem über solchen Kleinkram nachdenkst, dann wird Dein Programm nie fertig, ...
Da hast Du sowas von Recht! Aber dieser Kleinkram lässt mir immer keine Ruhe....
BlackJack hat geschrieben:Das würde ich aber wie gesagt erst machen, wenn nachweisbar an dieser Stelle ein Geschwindigkeitsproblem entsteht, bei dem diese Massnahme etwas bringt. Und dann würde ich auch erst einmal schauen ob das Cachen der Jahres-Events nicht schon ausreicht. Man sollte es nicht ohne deutlichen Mehrwert komplizierter machen als es sein muss.
Ok, sowas in der Art (wie auch von lunar) musste ich jetzt einfach mal hören! Jetzt kann ich wieder schlafen!
Gruß
mutetella