The first method:
From datetime import datetime, Timedelta weekdays = [' Monday ', ' Tuesday ', ' Wednesday ', ' Thursday ', ' Friday ', ' Saturday ', ' Sunday '] def get_previous_byday (Dayname, Start_date=none): if start_date is None: start_date = Datetime.today () day_num = Start_date.weekday () day_num_target = Weekdays.index (dayname) Days_ago = (7 + Day_num-day_num_target)% 7 if Days_ago = = 0: days_ago = 7 target_date = Start_date-timedelta (days = Day S_ago) return target_date print ( datetime.today ()) print (Get_previous_byday (' Monday ')) print (Get_previous_byday (' Monday ', DateTime (2016, 8, 28)))
The second method, with the Dateutil module
From datetime import datetime from dateutil.relativedelta import Relativedelta from dateutil.rrule import * d = DateTime.Now () print (d) Print (d + Relativedelta (weekday=fr)) print (d + relativedelta (weekday=fr (-1)))