此错误的解决方案是什么类型错误:strtime()参数1必须是str,而不是datetime.date

2024-10-01 11:23:44 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我写代码吗? 这就是我犯的错误 我只是不明白我是如何得到这个错误的:

CurrentDate = datetime.datetime.strptime(CurrentDate, "%Y-%m-%d %H:%M")
TypeError: strptime() argument 1 must be str, not datetime.date

完整代码:

import datetime

CurrentDate = datetime.datetime.now().date()
print(CurrentDate)

Run4Start = str(CurrentDate) + " 16:00"
Run4End = str(CurrentDate) + " 20:00"
Run4Start = datetime.datetime.strptime(Run4Start, "%Y-%m-%d %H:%M")
Run4End = datetime.datetime.strptime(Run4End, "%Y-%m-%d %H:%M")
print("RUN4 :", CurrentDate )
print(Run4Start, Run4End)


CurrentDate = datetime.datetime.strptime(CurrentDate, "%Y-%m-%d %H:%M")
print(CurrentDate)

if CurrentDate >= Run4Start and CurrentDate <= Run4End:
    print("Hit")
else:
    print("Miss!")

Tags: 代码datetimedate错误notbeargumentprint
1条回答
网友
1楼 · 发布于 2024-10-01 11:23:44

在:

CurrentDate = datetime.datetime.strptime(CurrentDate, "%Y-%m-%d %H:%M")

CurrentDate已经是一个datetime.date对象,在上面创建:

CurrentDate = datetime.datetime.now().date()

从来没有换过别的东西。所以你不需要解析它,它已经被“解析”了。只需删除试图解析它的行

这就是说,它只是一个date,你将它与某一天的datetime进行比较;不管它是否有效,它都不会执行您可能尝试执行的操作(确定当前时间是否在1600到2000之间)。您根本不需要进行字符串解析;针对命中与未命中的整个代码块测试可以简化为:

if datetime.time(16) <= datetime.datetime.now().time() <= datetime.time(20):
    print("Hit")
else:
    print("Miss!")

因为您只关心时间部分,根本不关心日期部分

相关问题 更多 >