我试过
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。发生了什么事?
答案 0 :(得分:5)
由于datetime
继承自date
,datetime
的每个实例都是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