如何检查变量是否是datetime.datetime或datetime.date的实例

时间:2013-03-27 08:29:50

标签: python datetime

我试过

In [16]: import datetime

In [17]: now = datetime.datetime.utcnow()

In [18]: isinstance(now, datetime.date)
Out[18]: True

In [19]: isinstance(now, datetime.datetime)
Out[19]: True

我的期望是第一个isinstance应返回False。发生了什么事?

2 个答案:

答案 0 :(得分:5)

由于datetime继承自datedatetime的每个实例都是date实例,即您可以使用{{1}无论你在哪里使用datetime个实例。这是面向对象编程中的central concept

要修改检查以执行所需操作,您可以使用date专门针对date进行测试。或者,您可以使用type(now) is datetime.date明确排除datetime

答案 1 :(得分:0)

您可以使用以下任一方法:

您可以使用任何随机日期来比较日期和日期时间实例。

一种方式:

a = datetime.date(2021,12,30) 
x = datetime.datetime(2020, 5, 17) 

print(isinstance(a,type(datetime.date(2021,12,30)))) #True
print(isinstance(a,type(datetime.datetime(2021,12,30)))) #False

第二种方式

a = datetime.date(2021,12,30)
x = datetime.datetime(2020, 5, 17)

print(isinstance(a, a.__class__)) # True
print(isinstance(a, x.__class__)) # False