from datetime import datetime, timedelta if __name__ == '__main__': weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] def get_previous_by_day(day_name, start_date=None): if start_date is None: start_date = datetime.today() day_num = start_date.weekday() day_num_target = weekdays.index(day_name) days_ago = (7 + day_num - day_num_target) % 7 if days_ago == 0: days_ago = 7 target_date = start_date - timedelta(days=days_ago) return target_date get_previous_by_day("Friday") # 但是如果要经常这么干,请使用dateutil包 d = datetime.now() from dateutil.relativedelta import relativedelta from dateutil.rrule import * # 找最近的周五,FR是rrule里的函数 print(d + relativedelta(weekday=FR)) # 找上一个周五 print(d + relativedelta(weekday=FR(-1)))