You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python生成最近N个年月格式的日期列表?

生成最近N个年月格式字符串的列表

纯标准库实现(无第三方依赖)

通过计算总月份数的方式处理跨年场景,逻辑清晰且无需额外安装包:

import datetime

def get_recent_n_months(n):
    today = datetime.date.today()
    current_total_months = today.year * 12 + today.month
    recent_months = []
    
    for offset in range(n):
        target_total = current_total_months - offset
        year = target_total // 12
        month = target_total % 12
        
        # 处理月份为0的情况(例如1月减1个月对应去年12月)
        if month == 0:
            year -= 1
            month = 12
        
        # 格式化两位数月份,拼接成目标字符串
        recent_months.append(f"{year}-{month:02d}")
    
    return recent_months

# 测试用例
print(get_recent_n_months(3))  # 若当前为10月,输出 ["2022-10", "2022-09", "2022-08"]
print(get_recent_n_months(4))  # 若当前为2月,输出 ["2023-02", "2023-01", "2022-12", "2022-11"]

依赖第三方库的简化实现

如果环境允许安装第三方包,使用python-dateutil的relativedelta可以更直观地处理月份增减,代码更简洁:

首先安装依赖:

pip install python-dateutil

实现代码:

import datetime
from dateutil.relativedelta import relativedelta

def get_recent_n_months(n):
    today = datetime.date.today()
    recent_months = []
    
    for offset in range(n):
        target_date = today - relativedelta(months=offset)
        recent_months.append(target_date.strftime("%Y-%m"))
    
    return recent_months

# 测试用例
print(get_recent_n_months(3))
print(get_recent_n_months(4))

两种方案对比:

  • 纯标准库方案:适合环境受限无法安装第三方包的场景,通过总月份数计算规避了跨年的复杂条件判断。
  • 第三方库方案:代码可读性更高,逻辑更直观,适合允许安装外部依赖的场景。

内容的提问来源于stack exchange,提问作者taga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:15:44