将对象中的当前日期与数据库中的日期进行比较

时间:2018-01-31 13:07:15

标签: python date datetime

我正在尝试检查当前日期是否在包含我的数据库的多个记录的列表中。我回来的记录不仅是日期,还有其他东西。如果我打印列表,我得到以下作为返回

((0L, datetime.date(2018, 1, 29)), (0L, datetime.date(2018, 1, 30)), (1L, datetime.date(2018, 1, 31)))

当前日期如下:

 currentdate = time.strftime("%Y/%m/%d")
 cd_dt = datetime.strptime(currentdate, '%Y/%m/%d').date()

现在我尝试比较它们:

print(cd_dt in result_set)

即使今天的日期在该列表中,也会返回false。

我该如何解决这个问题?

提前谢谢

2 个答案:

答案 0 :(得分:1)

您的代码存在的问题是您正在尝试将time对象与元组元组进行匹配。如果要修复解决方案,可以使用以下行进行修复:

更改

>>> print(cd_dt in result_set)

>>> any(d[1] == cd_dt for d in k)
>>> True

您可以使用内置filter来过滤结果集。通过这种方式,您还可以获得结果集的匹配元素。

>>> import datetime
>>> k = ((0L, datetime.date(2018, 1, 29)), (0L, datetime.date(2018, 1, 30)), (1L, datetime.date(2018, 1, 31)))
>>> list(filter(lambda x: x[1] == datetime.date.today(),k))
>>> [(1L, datetime.date(2018, 1, 31))]

或者,如果您只是想检查当前日期是否在结果集中,您可以使用any

>>> any(d[1] == datetime.date.today() for d in k)
>>> True

答案 1 :(得分:0)

List = ((0L, datetime.date(2018, 1, 29)), 
        (0L, datetime.date(2018, 1, 30)), 
        (1L, datetime.date(2018, 1, 31)))

currentdate = time.strftime("%Y/%m/%d")
cd_dt = datetime.strptime(currentdate, '%Y/%m/%d').date()

return cd_dt in List

尝试以上代码。它有效。