Предыдущий день недели в Python

В Python, учитывая дату, как мне найти предыдущий рабочий день? (Будние дни пн-пт. Меня не интересуют праздники)

Просто вычтите день с указанной даты, затем проверьте, является ли дата днем ​​недели. Если нет, вычитайте другой, пока у вас не будет дня недели:

from datetime import date, timedelta def prev_weekday(adate): adate -= timedelta(days=1) while adate.weekday() > 4: # Mon-Fri are 0-4 adate -= timedelta(days=1) return adate 

Демо-версия:

 >>> prev_weekday(date.today()) datetime.date(2012, 8, 20) >>> prev_weekday(date(2012, 8, 20)) datetime.date(2012, 8, 17) 

В качестве альтернативы используйте таблицу смещения; не нужно делать это сопоставление, кортеж будет делать только отлично:

 _offsets = (3, 1, 1, 1, 1, 1, 2) def prev_weekday(adate): return adate - timedelta(days=_offsets[adate.weekday()]) 

в модуле datetime вы можете сделать что-то вроде этого: a = date.today() - timedelta(days=1) а затем a.weekday() . Где понедельник – 0, а воскресенье – 6.

См. Модуль datetime , в частности функцию date() и weekday() . Например:

 import datetime temp = datetime.date(2012,8,21) # Today's date: 2012/08/21 print temp.weekday() 

Это приведет к выходу 1 . 0 понедельник, 1 на вторник и т. Д., До 6 на воскресенье. Найти предыдущий рабочий день легко.