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

Python datetime.strptime转字符串为日期结果异常原因咨询

问题根因

你贴出的代码存在三处明显错误,直接导致解析结果和预期不符:

  • datetime.strptime()的第一个参数仅支持传入单个日期字符串,不支持直接传入列表对象。你将整个date_str列表作为参数传入,方法本身不会自动遍历列表做批量解析,你现在得到的错乱日期值,并非对应输入字符串的解析结果。正常情况下这行代码会直接抛出TypeError: strptime() argument 1 must be str, not list报错,你能得到输出说明实际运行的代码和你贴出的版本可能存在偏差,大概率是循环解析时写错了传值逻辑。
  • 你提到最初设定的解析格式为'%m/%d/%y',其中格式符%y仅匹配2位长度的年份(例如21对应2021),但你的输入日期里年份是4位长度(2021、2022),匹配4位年份必须使用大写的%Y格式符,用%y解析4位年份会触发格式匹配错误。
  • 输出结果为%Y-%m-%d %H:%M:%S格式不属于错误,这是Python中datetime对象的默认字符串表现形式——strptime的作用是将字符串转为datetime类型对象,直接打印对象时就会用这个默认格式展示。如果需要输出指定格式的日期字符串,需要在拿到datetime对象后调用strftime()方法做格式化。
正确写法
from datetime import datetime

date_str_list = ['11/10/2021', '12/15/2021', '2/26/2022', '3/10/2021', '3/10/2021', '3/11/2021']
# 遍历列表逐个解析,4位年份对应%Y格式符
parsed_date_objs = [datetime.strptime(date_str, '%m/%d/%Y') for date_str in date_str_list]

# 直接打印datetime对象(默认格式)
for date_obj in parsed_date_objs:
    print(date_obj)

# 如果需要输出为指定字符串格式,用strftime转换
# for date_obj in parsed_date_objs:
#     print(date_obj.strftime('%m/%d/%Y'))
运行输出
2021-11-10 00:00:00
2021-12-15 00:00:00
2022-02-26 00:00:00
2021-03-10 00:00:00
2021-03-10 00:00:00
2021-03-11 00:00:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:09:18