Почему я не могу определить в коде, что объект имеет тип DataTime? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть переменная 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 голосов
/ 22 мая 2018

В этом случае вы хотели бы использовать isinstance

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

Короче говоря, причина в том, что type(v) является более ограничительным и не может использовать подклассы, так какчто DataTime я думаю, что это.

Для подробного обзора type vs isinstance перейдите к этот вопрос .

Также, обратите внимание, что ваштип <type 'DateTime'>, а не datetime.datetime.Вам нужно импортировать этот класс DateTime и использовать его.Например:

from x.y.z import DateTime

if type(v) in (..., DateTime, ...):
    ....
0 голосов
/ 22 мая 2018

Я проверил это, и это условие было 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")

Out:

<type 'datetime.datetime'>
"I'm True"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...