如何检查日期是否在日期字符串列表中?

Mik*_*avi 2 python date list

这将始终打印错误.如何检查日期是否在数组中并打印出正确的内容?

dates = [ "2012-09-03",
"2012-10-08",
"2012-10-09",
"2012-11-12",
# .. more values snipped for brevity
"2013-04-19",
"2013-05-27", ]

if date.today() in dates:
    print "true"
elif date.today() not in dates:
    print "false"
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 9

您正在将字符串与python datetime.date对象进行比较; 您需要使用以下.strftime()方法将date对象转换为字符串进行比较:

today = date.today().strftime('%Y-%m-%d')
print today in dates # Will print "True" or "False"
Run Code Online (Sandbox Code Playgroud)

为了进一步说明这一点

>>> from datetime import date
>>> date.today()
datetime.date(2012, 8, 28)
>>> date.today() == '2012-08-28'
False
>>> date.today().strftime('%Y-%m-%d') == '2012-08-28'
True
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用该.isoformat()方法,该方法使用完全相同的输出格式:

>>> date.today().isoformat()
'2012-08-28'
Run Code Online (Sandbox Code Playgroud)