首页 > 解决方案 > 如何修复“'TypeError: datetime.time' 对象不可下标”

问题描述

我正在提取数据时间并计算结果,但 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

标签: pythonexcelpython-datetime

解决方案


trans或您的item值都是datetime.time对象的 - 这就是错误告诉您的内容:

TypeError:“datetime.time”对象不可下标

您不能像 fe 字符串一样对它们进行切片/下标:

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

推荐阅读