2016-10-25 17 views
0

私は6日を計算する関数を持っています。それは素晴らしいことですが、土曜日と日曜日をスキップする方法が必要です。どのように私は土曜日と日曜日をスキップするために、この機能を修正することができますか? 6日間のシフトとして6営業日の追加

def calc_bus_day(start_day): 
    if start_day.isoweekday() in range(1, 5): 
     shift = 6 
     returnDate = start_day + datetime.timedelta(days=shift) 
     if returnDate.isoweekday() == 0: 
      return "{:%m-%d-Y}".format(returnDate + datetime.timedelta(days=1)) 
     elif returnDate.isoweekday() == 5: 
      return "{:%m-%d-%Y}".format(returnDate + datetime.timedelta(days=2)) 
     else: 
      return "{:%m-%d-%Y}".format(returnDate) 

答えて

1

はいつも週末を超えるシフト、あなたは8日(6日+土曜日と日曜日)のためにシフトすることができます含まれています

def calc_bus_day(start_day): 
    if start_day.isoweekday() in range(1, 5): 
     shift = 8 
     < your code > 
+0

が生成されます笑、なぜ私はそのことを考えませんでしたか? – Pyth0nicPenguin

1

あなたは、私が使用してこのコードを使用することができます。それが6日だけでなく、何日も追加されるという試みです。たとえばgetNextBusinessDays('2016-10-20', 6)については

from datetime import datetime, timedelta, date  

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

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

は、「2016年10月28日」

関連する問題