为什么我无法在代码中确定对象是 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 特定类型。
我测试了一下,这个条件是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, ...):
....
我有一个变量 v,当我这样做时
print type(v)
我明白了
<type 'DateTime'>
但是当我这样做的时候
if type(v) in (datetime, datetime.date, datetime.datetime, datetime.time):
这不是真的
问题是:为什么?
编辑:
DateTime 类型是 Spotfire 特定类型。
我测试了一下,这个条件是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, ...):
....