复制
收藏
提问
简洁
date1 = datetime.strptime(ws_yj.cell(row=j, column=7).value, '%Y-%m-%d') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: strptime() argument 1 must be str, not datetime.datetime
4月前
回答
更专业一些
在使用 datetime.strptime()
函数时,需要确保第一个参数是一个字符串类型的日期时间对象。错误提示 TypeError: strptime() argument 1 must be str, not datetime.datetime
表明传入的参数类型不正确,即第一个参数不是一个字符串,而是一个 datetime.datetime
对象16。
根据引用信息1,如果传入的是一个 datetime.datetime
类型的对象,需要先将其转换为字符串类型。可以通过使用 strftime()
方法来实现这一转换。例如,如果有一个 datetime.datetime
对象 now
,可以这样转换:
import datetime
now = datetime.datetime.now()
now_str = now.strftime("%Y-%m-%d %H:%M:%S") # 将 datetime 对象转换为字符串类型
针对您遇到的问题,您需要将 ws_yj.cell(row=j, column=7).value
这个 datetime.datetime
对象转换为字符串。假设 ws_yj.cell(row=j, column=7).value
返回的是一个 datetime.datetime
对象,您可以这样修改代码:
date_string = ws_yj.cell(row=j, column=7).value.strftime('%Y-%m-%d')
date1 = datetime.strptime(date_string, '%Y-%m-%d')
这样,date1
就会是一个正确的 datetime.datetime
对象,而不会抛出类型错误。1。
研究模式展开阅读更多资料、详细回答