基于当前年月生成未来12个月日期列表的Python代码问题
解决Python生成未来12个月日期串的问题
你的原代码存在两个核心问题:一是年份固定为'2022',无法自动处理跨年;二是循环仅覆盖当前年份剩余月份,没有生成后续年份的月份。以下是两种可行的修改方案:
方案一:仅用标准库datetime实现
通过手动计算月份和年份的变化,自动处理跨年逻辑,同时确保输出12个月份:
import datetime # 获取当前日期的年份和月份 current_year = datetime.date.today().year current_month = datetime.date.today().month # 生成从当前月的下一个月开始的12个日期 for i in range(12): # 计算目标月份:当前月 + i + 1(因为要从下一个月开始) target_month = current_month + i + 1 target_year = current_year # 处理跨年情况 if target_month > 12: target_year += target_month // 12 target_month = target_month % 12 # 处理刚好是12的倍数的情况(如12月+12个月=次年12月) if target_month == 0: target_month = 12 target_year -= 1 # 格式化输出,月份补零为两位数字 print(f"{target_year} {target_month:02d} 01")
方案二:用dateutil简化逻辑
python-dateutil库的relativedelta可以直接处理月份增减,无需手动计算跨年,代码更简洁:
先安装依赖:
pip install python-dateutil
然后编写代码:
import datetime from dateutil.relativedelta import relativedelta current_date = datetime.date.today() # 生成从当前月的下一个月开始的12个日期 for i in range(1, 13): target_date = current_date + relativedelta(months=i) print(f"{target_date.year} {target_date.month:02d} 01")
两种方案都能输出你期望的格式,比如当前为2022年9月时,会生成从2022年10月到2023年9月的所有日期串。
内容的提问来源于stack exchange,提问作者Ulewsky
相关产品推荐
相关产品推荐

