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

如何使用for循环生成季度日期?修改代码时遇月份范围报错

问题分析与解决

错误原因

原代码遍历range(12)生成12次循环,当m取10、11时,m+3会得到13、14,超出datetime要求的1..12月份范围,直接触发ValueError。另外,季度一年仅4个,没必要遍历12次,属于逻辑冗余。

正确修改方案

方案1:直接遍历季度起始月份

季度的起始月份固定为1、4、7、10,直接循环这四个值即可:

import datetime

list_of_quarters = []
for y in range(2023, 2027):
    # 遍历每个季度的起始月份
    for m in [1, 4, 7, 10]:
        # 保留原逻辑:2026年仅保留第一个季度
        if y == 2026 and m > 1:
            continue
        list_of_quarters.append(datetime.datetime(year=y, month=m, day=1).strftime('%Y-%m-%d'))

方案2:通过循环索引计算季度月份

用range(4)遍历4个季度,通过索引计算对应起始月份,逻辑更清晰:

import datetime

list_of_quarters = []
for y in range(2023, 2027):
    # 一年4个季度,循环4次
    for q_idx in range(4):
        quarter_month = q_idx * 3 + 1
        # 对应原逻辑:2026年仅保留第一个季度(索引0)
        if y == 2026 and q_idx > 0:
            continue
        list_of_quarters.append(datetime.datetime(year=y, month=quarter_month, day=1).strftime('%Y-%m-%d'))

额外说明

  • 修正了原代码的拼写错误:qaurters改为quarters
  • 保留了原逻辑中2026年仅保留第一个周期的判断,若需求变更可直接删除该if语句

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:10:12