Мое решение также считает последний день.Таким образом, если начало и конец установлены на один и тот же день недели, то ответ будет 1 (например, 17 октября оба).Если начало и конец - 2 последовательных рабочих дня, тогда ответом будет 2 (например, 17 и 18 октября).Он считает целые недели (в каждой из нас будет 2 выходных дня), а затем проверяет дни напоминания, если они содержат выходные дни.
import datetime
def getWeekdaysNumber(start,end):
numberOfDays = (end-start).days+1
numberOfWeeks = numberOfDays // 7
reminderDays = numberOfDays % 7
numberOfDays -= numberOfWeeks *2
if reminderDays:
#this line is creating a set of weekdays for remainder days where 7 and 0 will be Saturday, 6 and -1 will be Sunday
weekdays = set(range(end.isoweekday(), end.isoweekday() - reminderDays, -1))
numberOfDays -= len(weekdays.intersection([7,6,0,-1])
return numberOfDays
пример использования:
start = date(2018,10,10)
end = date (2018,10,17)
result = getWeekdaysNumber(start,end)`