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

Python中如何使用While循环生成从当日到月初的日期列表

Python获取当月首日到当日日期列表的问题修复

代码错误原因

  • datetime属于Python中的不可变类型,replace()方法不会修改原对象,只会返回修改后的新实例,你原代码没有接收replace()的返回值,每次追加到列表的都是最开始的原始日期对象,所以所有输出日期完全相同
  • 原代码的循环逻辑会遗漏当日和当月1号两个日期,最终生成的列表缺少首尾两个值
  • 额外优化点:不需要把日期转成字符串取天再转整型,直接调用datetime对象的day属性就能拿到当日天数,效率更高也更简洁

原代码修复版

from datetime import datetime

dateIs = datetime.today()
thisDayInt = dateIs.day
dateListTest = []
while thisDayInt >= 1:
    # 接收replace返回的新日期对象
    modified_date = dateIs.replace(day=thisDayInt, hour=0, minute=0, second=0, microsecond=0)
    dateListTest.append(modified_date)
    thisDayInt -= 1

print(dateListTest)

更简便的实现方案

使用列表推导式可以直接生成目标列表,代码更简洁易读:

from datetime import datetime

today = datetime.today()
# 从当日天数倒序遍历到1,直接生成日期列表
date_list = [today.replace(day=d, hour=0, minute=0, second=0, microsecond=0) for d in range(today.day, 0, -1)]

# 如果需要字符串格式的日期,可额外转换
date_str_list = [item.strftime("%Y-%m-%d") for item in date_list]
print(date_str_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:06:05