为什么我不能在代码中确定对象是DataTime类型?

时间:2018-05-18 14:02:07

标签: python ironpython spotfire

我有变量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

2 个答案:

答案 0 :(得分:1)

我测试了它,这个条件是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"

答案 1 :(得分:0)

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

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

简而言之,原因是type(v)限制性更强,不能使用子类,因为我想象的是DataTime。

详细了解type vs isinstance转到this question

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

from x.y.z import DateTime

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