在Python中,给定一个日期,我如何找到前一个工作日? (工作日是周一至周五。我不关心假期)
答案 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)
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()
这将输出1
。 0
代表星期一,1
代表星期二等,直到星期日为6
。从这里可以轻松找到上一个工作日。