我试过了
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。发生了什么?
由于datetime
继承自,因此也的date
每个实例都是 的实例,即您可以在任何要使用实例的地方使用实例。这是面向对象编程的核心概念。datetime
date
datetime
date
要修改检查以执行您想要的操作,您可以date
使用type(now) is datetime.date
. datetime
或者,您可以使用明确排除isinstance(now, datetime.date) and not isinstance(now, datetime.datetime)
。
您可以使用任何一种方法,如下所示:
您可以使用任何随机日期来比较日期和日期时间实例。
单程:
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