2017-07-06 2 views
0

Ich versuche Tage zu einem Geschäftstag Kalender hinzuzufügen. Irgendwie sollte ich das Datum 28.04.2015 erhalten aber mit meinem Code bekomme ich 24.04.2015. Ich verwende Feiertagskalender und nur wochentags (Montag bis Freitag). Der Code sieht wie folgt aus:Hinzufügen von Tagen zum Geschäftstag Kalender in Python

from datetime import datetime, timedelta, date  
import holidays 

def getNextBusinessDays(date, num): 
    for i in range(0, num): 
     date = getNextBusinessDay(date) 
    return date  

def getNextBusinessDay(fromDate): 

    Holiday = holidays.DE() 

    nextBuinessDate = datetime.strptime(fromDate, "%Y-%m-%d") 
    nextBuinessDate = nextBuinessDate + timedelta(days=1) 
    if date.weekday(nextBuinessDate) not in range(0, 5) and nextBuinessDate not in Holiday: 
     nextBuinessDate = nextBuinessDate + timedelta(days=1) 
    if date.weekday(nextBuinessDate) not in range(0, 5) and nextBuinessDate not in Holiday: 
     nextBuinessDate = nextBuinessDate + timedelta(days=1) 
    return nextBuinessDate.strftime('%Y-%m-%d') 

if __name__ == '__main__': 

    dateshift = getNextBusinessDays('2015-02-01', 60) 
    print(dateshift) 
+0

können Sie Ihre vollständigen Code posten? – Veltro

+0

@Veltro, danke. Just did – MCM

+0

Einfache Testfall, wo Ihr Code nicht funktioniert: Heute ist Donnerstag, morgen ist Urlaub. In diesem Fall geben Sie "getNextBsinessDay()" Sonntag als nächsten Geschäftstag zurück. –

Antwort

1

Hier endgültige Arbeitslösung

import datetime as dt 
import holidays 

Holiday = holidays.DE() 

def getNextBusinessDay(date, n): 
    for i in range(n): 
     nextday = date1 + dt.timedelta(days=1) 
     while nextday.weekday() > 4 or nextday in Holiday: 
      nextday += dt.timedelta(days=1) 
     date = nextday 
    return date 

#test 
datetest = dt.datetime.strptime('02-04-15', '%d-%m-%y') 
print(getNextBusinessDay(datetest,1)) 
Verwandte Themen