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

如何将Python列表中的datetime.date对象转为YYYY-MM-DD格式?

问题解决:列表中日期显示为datetime对象而非字符串格式

核心原因

你当前追加到sections列表中的是datetime.date类型的对象:

  • 单独print(barstartdate)时,Python会自动调用对象的str()方法,输出YYYY-MM-DD格式的字符串;
  • 直接打印列表时,Python会输出对象的repr()表示(即datetime.date(2023, 6, 1)格式),用于调试时展示对象类型和属性。

两种解决方法

方法1:追加时直接转换为字符串(推荐,若无需后续日期运算)

把sections.append(barstartdate)替换为以下任意一种方式,直接将日期对象转为字符串再存入列表:

  • 利用str()自动转换(默认就是YYYY-MM-DD格式):
    sections.append(str(barstartdate))
    
  • 用strftime()精确控制格式(更灵活,可自定义输出样式):
    sections.append(barstartdate.strftime("%Y-%m-%d"))
    

修正后的完整代码示例:

import datetime

sections = []

# 测试用起止日期参数
startyear, startmonth, startday = 2023, 6, 1
endyear, endmonth, endday = 2023, 6, 14

barstartdate = datetime.date(int(startyear), int(startmonth), int(startday))
barenddate = datetime.date(int(endyear), int(endmonth), int(endday))
delta = datetime.timedelta(days=7)

while barstartdate <= barenddate:
    print(barstartdate)
    sections.append(str(barstartdate))  # 转换为字符串后追加
    barstartdate += delta

print(sections)

输出结果:

2023-06-01
2023-06-08
['2023-06-01', '2023-06-08']

方法2:保留datetime对象,打印时手动转换(若需后续日期操作)

如果列表中的日期还需要用于计算、比较等操作,不要转换为字符串,而是在打印列表时统一处理每个元素:

# 原代码不变,只是修改最后一行打印语句
print([str(date) for date in sections])
# 或者用更美观的格式输出
print(", ".join(str(d) for d in sections))

输出示例:

['2023-06-01', '2023-06-08']
# 或者
2023-06-01, 2023-06-08

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:17:38