我到处寻找,似乎无法找到我需要的东西。我有一个列表,其中包含我需要组合以查找总和的日期时间。此列表从文件中解析,并且可以包含任意数量的日期时间项。它看起来像是一个例子。
[datetime.datetime(1900, 1, 1, 1, 19, 42, 89000), datetime.datetime(1900, 1, 1, 2, 8, 4, 396000), datetime.datetime(1900, 1, 1, 0, 43, 54, 883000), datetime.datetime(1900, 1, 1, 0, 9, 13, 343000)]
我用来获取此代码的代码是
time = [i[8] for i in smaller_list]
try:
times = [datetime.datetime.strptime(x, "%H:%M:%S.%f") for x in time]
except ValueError:
times = [datetime.datetime.strptime(x, "%M:%S.%f") for x in time]
时间从我创建的更大的嵌套列表获取变量以分隔数据行。我已经尝试过datetime.datetime.combine(),但我不确定如何将它用于单个列表中的项目。我是否需要创建一个嵌套的日期时间列表并总结它们?我如何迭代此列表并将所有时间合并为一笔金额?如果我必须创建一个嵌套列表,我如何迭代它来累计时间?试图绕过这个。
当您打印时间时,这是返回的内容,因此示例列表直接帮助我。
[datetime.datetime(1900, 1, 1, 1, 19, 42, 89000), datetime.datetime(1900, 1, 1, 2, 8, 4, 396000), datetime.datetime(1900, 1, 1, 0, 43, 54, 883000), datetime.datetime(1900, 1, 1, 0, 9, 13, 343000)]
这是原始时代的样子。我需要在总时间内加上这些时间。通常在几分钟内包含微秒,很少几小时。
25:21.442
09:52.149
28:03.604
27:12.113
答案 0 :(得分:0)
如果有其他人遇到这个问题,这里是我使用的代码。
time = [i[8] for i in smaller_list]
sumtime = datetime.timedelta()
for i in time:
try:
(h, m, s) = i.split(':')
d = datetime.timedelta(hours=int(h), minutes=int(m), seconds=float(s))
except ValueError:
(m, s) = i.split(':')
d = datetime.timedelta(minutes=int(m), seconds=float(s))
sumtime += d
print(str(sumtime))
如果您正在学习python,那么试图将您的思维与日期时间和时间差异结合在一起会非常困惑。对于持续时间,您需要使用timedelta。您必须将值拆分并将正确的值传递给时间增量,然后您可以将它们相加以查找持续时间。希望这可以帮助那些人。
如果您需要将微秒数舍入为秒,则可以使用此代码代替d。
d = datetime.timedelta(minutes=int(m), seconds=round(float(s)))