Python-date-range-generator über Werktage
Ich versuche zu schaffen, eine generator-Funktion zum Durchlaufen Werktagen (Wochentage), wobei Wochenenden (und Feiertagen wäre schön, auch!). Bisher habe ich nur eine Funktion, die einfach iteriert über Tage:
def daterange(startDate, endDate):
for i in xrange(int((endDate - startDate).days)):
yield startDate + timedelta(i)
Ich bin kämpfen, um herauszufinden, eine saubere, effiziente und pythonic Weg, um den generator zu überspringen, an Wochenenden und Feiertagen. Vielen Dank im Voraus!
- Sehen Sie, diese Frage für die Feiertage: stackoverflow.com/questions/1986207/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde stark empfehlen, die dateutil Bibliothek für solche Aufgaben. Eine grundlegende (nicht ignorieren Feiertagen) iterator über Werktagen, dann einfach ist:
dateutil.rrule.WDAYMASK
Sie können sehen, dass es eine Liste von 0-6, d.h. alle Tage, nicht nur Montag-Freitag.from dateutil.rrule import *
sonst erhalten Sie Fehler wie MO nicht identifiziertVorausgesetzt
startDate
undendDate
einem datetime-oder date-Objekte, die Sie verwenden können, dieWochentag
Methode um den Tag der Woche, dann überspringen Sie es, wenn es Samstag oder Sonntag. Nur:Für die Feiertage, die Sie haben zu prüfen Sie manuell, für jeden Urlaub, den Sie wollen. Einige Feiertage definiert sind, die in komplexer Weise, so könnte dies ein wenig schwierig sein.
Es ist eine nützliche Bibliothek namens
dateutil
tun können diese Art der Sache für Sie. Es können sowohl Bereiche der Daten (oder Daten basierend auf benutzerdefinierten Regeln), außer an bestimmten Tagen, sollten Sie eine Woche ab, an einem Tag, etc... hat Auch eine etwas flexibler timedelta als die builtin-datetime-Bibliothek.Docs an http://labix.org/python-dateutil/ - und auf PyPi