添加单个列表中的datetime.datetime

时间:2018-06-07 16:22:20

标签: python list datetime python-3.6 nested-lists

我到处寻找,似乎无法找到我需要的东西。我有一个列表,其中包含我需要组合以查找总和的日期时间。此列表从文件中解析,并且可以包含任意数量的日期时间项。它看起来像是一个例子。

[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

1 个答案:

答案 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)))