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()])