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

Python实现获取两个指定日期间各月首日的循环遍历方法

需求场景

需要在两个选定的日期范围内循环遍历,仅提取范围内每个月的首日。

报错原因分析

Python标准库的datetime.timedelta仅支持周、天、小时、分钟等固定时长的时间单位,而月份的天数不固定(28~31天),不存在通用的标准月份时长,因此无法直接创建月份单位的timedelta对象,这就是修改delta为月份单位后触发报错的根本原因。

可行解决方案

你整理的方案逻辑是可行的,核心是通过总月份数换算实现跨月跳转,不需要依赖第三方库。如果需要确保输出包含起始月份的首日,可以调整打印顺序,优化后代码如下:

import datetime

start_date = datetime.date(2020, 1, 1)
end_date = datetime.date(2020, 4, 4)

datenow = start_date
while datenow <= end_date:
    # 先打印当前符合要求的月首日
    print(datenow)
    # 计算下一个月的首日
    total_months = datenow.year * 12 + datenow.month
    next_year, next_month = divmod(total_months, 12)
    datenow = datetime.date(next_year, next_month + 1, 1)

上述代码的输出结果为:

2020-01-01
2020-02-01
2020-03-01
2020-04-01

完全符合选定日期范围内取每月首日的需求,跨年场景也可以正常处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:48:02