为什么我无法在代码中确定对象是 DateTime 类型?

Why cannot I determine in code that an object is of a DataTime type?

我有一个变量 v,当我这样做时

print type(v)

我明白了

<type 'DateTime'>

但是当我这样做的时候

if type(v) in (datetime, datetime.date, datetime.datetime, datetime.time):

这不是真的

问题是:为什么?

编辑:

DateTime 类型是 Spotfire 特定类型。

https://docs.tibco.com/pub/doc_remote/spotfire/7.9.0/TIB_sfire-analyst_7.9.0_api/html/F_Spotfire_Dxp_Data_DataType_DateTime.htm

我测试了一下,这个条件是True

import datetime


v = datetime.datetime.now()  # maybe your problem is here.
print(type(v))

if type(v) in (datetime, datetime.date, datetime.datetime, datetime.time):
    print("I'm True")

else:
    print("I'm False")

输出:

<type 'datetime.datetime'>
"I'm True"

在这种情况下您要使用的是 isinstance

if isinstance(v, (datetime, datetime.date, datetime.datetime, datetime.time)):

简而言之,原因是 type(v) 限制更多,不能使用 subclasses,就像我想象的那样。

有关 type vs isinstance 的详细概述,请转到 this question

此外, 请注意,您的类型是 <type 'DateTime'> 而不是 datetime.datetime。您需要导入 DateTime class 并使用它。例如:

from x.y.z import DateTime

if type(v) in (..., DateTime, ...):
    ....