不能减去日期,因为 IDE 认为一个是 unicode

Can't subtract dates because IDE considers one to be unicode

我正在比较两天,一个是今天的日期,一个来自一个大列表。 IDE 似乎认为 item[3] 是一个 unicode 日期,所以我添加了 print 语句来显示结果。该代码是一个大集合的一部分,但我包括了重要的部分。

代码:

print today
print item[3]
if (today - item[3]).days > 10:
        item[4] =  today + timedelta(days=10)

打印语句的结果如下:

2015-01-11 00:00:00
2015-01-06

错误代码:

if (today - item[3]).days > Configuration_SLA:
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'unicode'

您看到的数字并不意味着它是 datetime 对象或整数。例如,

>>> a="4"
>>> print (a)
4
>>> type(a)
<class 'str'>
>>> 

你看到了 4 但这并不意味着 4 在这里是一个整数,它是一个字符串。所以你应该检查你的列表,调试它;

print (type(item[3]))

因为 item[3] 是一个字符串(Unicode 说服),将它变成一个 datetime.datetime 对象 .strptime:

theday = datetime.datetime.strptime(item[3], '%Y-%m-%d')
if (today - theday).days > 10:
    # etc, etc

我不认为你的 IDE 与它有任何关系 - 看起来它只是从 Python 本身转发一条正确的错误消息(如果你尝试在 datetime.datetime 实例和任何类型的字符串之间进行算术运算!)。

顺便说一句,当你想要查看可能不是它们看起来的东西时,总是使用

print repr(thefunnything)

这会给你更多的信息,从不只是

print thefunnything

其任务只是显示一个人类可读的字符串,不帮助调试:-)