Добавление datetime.datetime, которые находятся в одном списке - PullRequest
0 голосов
/ 07 июня 2018

Я искал везде и не могу найти то, что мне нужно.У меня есть список, который содержит дату и время, которые мне нужно объединить, чтобы найти сумму.Этот список анализируется из файла и может содержать любое количество элементов даты и времени.Это выглядит так для примера.

[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 голосов
/ 07 июня 2018

Если кто-то столкнется с этой проблемой, вот код, который я использовал.

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

Если вы изучаете питон, это довольно запутанно, пытаясь сосредоточиться на дате и времени.Для продолжительности вам нужно использовать timedelta.Вы должны разделить значения и передать правильные значения в дельту времени, а затем вы можете суммировать их, чтобы найти длительность.Надеюсь, это кому-то поможет.

Если вам нужно округлить микросекунды до секунд, вы можете использовать этот код вместо d.

 d = datetime.timedelta(minutes=int(m), seconds=round(float(s)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...