计算上一个周五的日期

112 阅读1分钟
from datetime import datetime, timedelta

weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
            'Friday', 'Saturday', 'Sunday']


def get_previous_byday(dayname, start_date=None):
    if start_date == None:
        start_date = datetime.today()

    # 计算出开始的时间是星期几
    # 注意weekday()返回的是0~6,是星期一到星期日
    day_num = start_date.weekday()
    print("给定开始日期是星期几:", day_num)
    # 算出给定周几的下标
    day_num_target = weekdays.index(dayname)
    print("获取目标星期的下标:", day_num_target)
    # 获取今天是周几,减去目标是周几 加 7
    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


print(get_previous_byday('Saturday'))