不能减去日期,因为 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
其任务只是显示一个人类可读的字符串,不帮助调试:-)
我正在比较两天,一个是今天的日期,一个来自一个大列表。 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
其任务只是显示一个人类可读的字符串,不帮助调试:-)