上一个工作日在Python中

Lob*_*ert 12 python date weekday

在Python中,给定一个日期,我如何找到前一个工作日?(工作日是周一至周五.我不关心假期)

Mar*_*ers 33

只需从给定日期减去一天,然后检查日期是否为工作日.如果没有,减去另一个,直到你有一个工作日:

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
Run Code Online (Sandbox Code Playgroud)

演示:

>>> prev_weekday(date.today())
datetime.date(2012, 8, 20)
>>> prev_weekday(date(2012, 8, 20))
datetime.date(2012, 8, 17)
Run Code Online (Sandbox Code Playgroud)

或者,使用偏移表; 没有必要使这个映射,一个元组将做得很好:

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