最简单的方法是使用模块dateutil https://pypi.org/project/python-dateutil/:
>>> from dateutil.relativedelta import FR, relativedelta
>>> datetime.date.today()+relativedelta(day=31, weekday=FR(-1))
datetime.date(2021, 6, 25)
不要以为只需添加 28 天即可获得后续月份的最后一个星期五。它并不总是有效。将 2024 年 2 月最后一个星期五加上 28 天,得出:
>>> datetime.date(2024,2,1)+relativedelta(day=31, weekday=FR(-1), days=28)
datetime.date(2024, 3, 22)
但该月的最后一个星期五是 3 月 29 日。让dateutil
为您正确执行此操作:
>>> datetime.date(2024,2,1)+relativedelta(day=31, weekday=FR(-1), months=1)
datetime.date(2024, 3, 29)