How to fix "'TypeError: datetime.time' object is not subscriptable"

How to fix "'TypeError: datetime.time' object is not subscriptable"

我正在提取数据时间并计算结果,但 00:00:00 值以不同的方式显示。这是为什么 ?我该如何解决?"

我已经尝试将其作为字符串读取,获取 char 的子列表并转换为整数。"

Ts = datetime.timedelta(hours = 0, minutes = 0, seconds = 0)
for i in range(0,len(cell_sl)):
    for item in cell_sl:
        trans = item[i]
        Ts = Ts + datetime.timedelta(
                hours=int(str(trans[:2])),
                minutes=int(str(trans[3:-3])),
                seconds=int(str(trans[6:]))
        )


print(Ts)

我希望输出例如 00:25:18,但我得到 TypeError: 'datetime.time' object is not subscriptable

您的 transitem 值是 datetime.time 对象的 - 这就是错误告诉您的内容:

TypeError: 'datetime.time' object is not subscriptable

你不能slice/subscript他们喜欢f.e。字符串:

trans = item[i]        # <-- this is a "subscription"  ...  either item is a datetime 
Ts = Ts + datetime.timedelta(hours= int(str(trans[:2])),  # or trans is one
                               minutes= int(str(trans[3:-3])), 
                               seconds= int(str(trans[6:])))

改用 小时、分钟、秒 属性 datetime.time

Ts = Ts + datetime.timedelta(hours = trans.time.hour, 
                             minutes = trans.time.minute, 
                             seconds = trans.time.second)

如果您不确定是哪一种,请使用print(type(item))查看它是什么类型。


带有一个日期时间值的完整示例:

import datetime

Ts = datetime.timedelta(hours = 0, minutes = 0, seconds = 0)

print(Ts)

now = datetime.datetime.now()
Ts += datetime.timedelta(hours=now.hour, minutes=now.minute, seconds=now.second)

print(Ts)

输出:

0:00:00
10:24:17