我是python初学者。下面是我要运行的代码:
matexp = input("What's the material expiration date (mm/dd/yy): ")
matexpir = datetime.strptime(matexp, "%m/%d/%y")
d1 = datetime.today()
d2 = timedelta(days=30)
d3 = d1 + d2
if matexpir == d3:
matstat = "CAUTION"
elif matexpir <= d1:
matstat = "EXPIRED"
else :
matstat = "Null"
在测试这段代码时,我可以让它在表上打印matstat或Status = 'EXPIRED',但是当我试图让它打印'CAUTION'时,它不会直接转到'Null'。为什么呢?我该怎么修呢?请帮助。
谢谢。
在当前的形式中,测试比较的是日期和日期时间,这显然是不相等的。
要解决这个问题,比较应该是对等的。日期比较,除去时间因素
解决办法:
改变:
matexpir = datetime.strptime(matexp, "%m/%d/%y")
:
matexpir = datetime.strptime(matexp, "%m/%d/%y").date()
然后改成
d1 = datetime.today()
:
d1 = datetime.today().date()
完整解决方案:
from datetime import datetime, timedelta
matexp = input("What's the material expiration date (mm/dd/yy): ")
matexpir = datetime.strptime(matexp, "%m/%d/%y").date()
d1 = datetime.today().date()
d2 = timedelta(days=30)
d3 = d1 + d2
if matexpir == d3:
matstat = "CAUTION"
elif matexpir <= d1:
matstat = "EXPIRED"
else:
matstat = "Null"