如何根据给定年份获取各季度的最后一个周五日期?
实现指定年份各季度最后一个周五的日期
核心思路
每个季度的最后一个月分别是3月、6月、9月、12月,只需找到这四个月的最后一个周五即可。具体逻辑:
- 先获取目标月份的最后一天
- 从该日期向前遍历,直到定位到周五
Python 实现代码
import datetime def get_last_fridays(year): # 季度末的月份列表 quarter_end_months = [3, 6, 9, 12] for month in quarter_end_months: # 计算当月最后一天:下个月第一天减1天,自动适配平闰年 last_day = datetime.date(year, month + 1, 1) - datetime.timedelta(days=1) # 从最后一天往前找周五(weekday()返回4代表周五,周一为0) while last_day.weekday() != 4: last_day -= datetime.timedelta(days=1) # 匹配示例的月份大小写格式输出 month_name = last_day.strftime("%B").capitalize() if month in [3,6] else last_day.strftime("%B").lower() print(f"last friday in {month_name}") # 调用示例:传入指定年份 get_last_fridays(2024)
代码说明
- 确定季度末月份:直接锁定3、6、9、12这四个季度收尾月份;
- 计算当月最后一天:通过「下个月第一天减1天」的方式,无需手动判断每月天数,自动兼容平年、闰年;
- 定位最后一个周五:从当月最后一天开始逐日回退,直到找到周五(
datetime中weekday()方法返回4对应周五); - 格式适配:完全匹配示例的月份大小写要求,3月、6月首字母大写,9月、12月全小写(若无需区分,直接用
last_day.strftime("%B")即可统一首字母大写)。
运行示例
传入年份2024时,输出如下:
last friday in March last friday in June last friday in september last friday in december
内容的提问来源于stack exchange,提问作者Achaius
相关产品推荐
相关产品推荐

