Я пытаюсь добавить n (целых) рабочих дней к заданной дате, добавление даты должно избегать праздников и выходных (это не входит в рабочие дни)
Решение проблемы
Пропустить выходные было бы довольно легко, сделав что-то вроде этого:
import datetime
def date_by_adding_business_days(from_date, add_days):
business_days_to_add = add_days
current_date = from_date
while business_days_to_add > 0:
current_date += datetime.timedelta(days=1)
weekday = current_date.weekday()
if weekday >= 5: # sunday = 6
continue
business_days_to_add -= 1
return current_date
#demo:
print '10 business days from today:'
print date_by_adding_business_days(datetime.date.today(), 10)
Проблема с праздниками заключается в том, что они сильно различаются в зависимости от страны или даже региона, религии и т. д. Вам понадобится список/набор праздников для вашего варианта использования, а затем пропустите их аналогичным образом. Отправной точкой может быть лента календаря, которую Apple публикует для iCal (в формате ics), для США — http://files.apple.com/calendars/US32Holidays.ics.
Вы можете использовать модуль icalendar для анализа этого.
Комментариев нет:
Отправить комментарий