9

我试过了

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。发生了什么?

4

2 回答 2

15

由于datetime继承自,因此也的date每个实例都是 的实例,即您可以在任何要使用实例的地方使用实例。这是面向对象编程的核心概念。datetimedatedatetimedate

要修改检查以执行您想要的操作,您可以date使用type(now) is datetime.date. datetime或者,您可以使用明确排除isinstance(now, datetime.date) and not isinstance(now, datetime.datetime)

于 2013-03-27T08:33:06.573 回答
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
于 2021-07-15T22:47:56.570 回答