Previous weekday in Python Previous weekday in Python python python

Previous weekday in Python


Simply subtract a day from the given date, then check if the date is a weekday. If not, subtract another, until you do have a weekday:

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

Demo:

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

Alternatively, use an offset table; no need to make this a mapping, a tuple will do just fine:

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


See the datetime module, in particular the date() and weekday() function. For example:

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

This will output 1. 0 stands for Monday, 1 for Tuesday, etc., until 6 for Sunday. Finding the preceding weekday is easy from here.


in datetime module you can do something like this: a = date.today() - timedelta(days=1)and then a.weekday(). Where monday is 0 and sunday is 6.