上一个工作日在Python中

时间:2012-08-21 11:14:08

标签: python date weekday

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

3 个答案:

答案 0 :(得分:31)

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

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

答案 1 :(得分:1)

在datetime模块中,您可以执行以下操作:a = date.today() - timedelta(days=1) 然后是a.weekday()。星期一是0,星期日是6。

答案 2 :(得分:0)

请参阅datetime模块,尤其是date()weekday()功能。例如:

import datetime

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

这将输出10代表星期一,1代表星期二等,直到星期日为6。从这里可以轻松找到上一个工作日。