我有变量v,当我做
时print type(v)
我确实
<type 'DateTime'>
但是当我做的时候
if type(v) in (datetime, datetime.date, datetime.datetime, datetime.time):
这不是真的
问题是:为什么?
编辑:
DateTime类型是Spotfire特定类型。
答案 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, ...):
....