Я имею два раза, запуск и время остановки, в формате 10:33:26 (HH:MM:SS). Мне нужно различие между этими двумя разами. Я просматривал документацию для Python и искал онлайн, и я предположил бы, что это будет иметь некоторое отношение к дате и времени и/или модулям времени. Я не могу заставить это работать правильно и продолжать находить только, как сделать это, когда дата включена.
В конечном счете я должен вычислить средние числа продолжительностей нескольких времени. Я заставил разницу во времени работать, и я храню их в списке. Я теперь должен вычислить среднее число. Я использую регулярные выражения для парсинга исходных времен и затем делаю различия.
Для усреднения я должен преобразовать в секунды и затем среднее число?
Да, определенно datetime
- это то, что вам здесь нужно. В частности, функция strptime
, которая анализирует строку в объект времени.
from datetime import datetime
s1 = '10:33:26'
s2 = '11:15:49' # for example
FMT = '%H:%M:%S'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)
Это дает вам объект timedelta
, который содержит разницу между двумя временами. Вы можете делать с этим все, что хотите, например преобразовывая его в секунды или добавляя к другому datetime
.
Будет возвращен отрицательный результат, если время окончания раньше времени начала, например s1 = 12:00:00
и s2 = 05:00:00
. Если вы хотите, чтобы код предполагал, что интервал пересекает полночь в этом случае (т.е. он должен предполагать, что время окончания никогда не раньше времени начала), вы можете добавить следующие строки в приведенный выше код:
if tdelta.days < 0:
tdelta = timedelta(days=0,
seconds=tdelta.seconds, microseconds=tdelta.microseconds)
(конечно, вам нужно включить from datetime import timedelta
где-нибудь). Спасибо J.F. Sebastian за указание на этот вариант использования.
Этот сайт предлагает попробовать:
import datetime as dt
start="09:35:23"
end="10:23:00"
start_dt = dt.datetime.strptime(start, '%H:%M:%S')
end_dt = dt.datetime.strptime(end, '%H:%M:%S')
diff = (end_dt - start_dt)
diff.seconds/60
Этот форум использует time.mktime ()
Структура, представляющая разницу во времени в Python, называется timedelta . Если у вас есть типы start_time
и end_time
как datetime
, вы можете рассчитать разницу, используя оператор -
, например:
diff = end_time - start_time
, вы должны сделать это перед преобразованием в конкретный строковый формат (например, до start_time.strftime (...)). Если у вас уже есть строковое представление, вам нужно преобразовать его обратно во время / дату и время с помощью метода strptime .
И time
, и datetime
имеют компонент даты.
Обычно, если вы имеете дело только с временной частью, вы указываете дату по умолчанию. Если вас просто интересует разница и вы знаете, что оба времени относятся к одному и тому же дню, создайте datetime
для каждого с днем, установленным на сегодняшний день, и вычтите время начала из времени остановки, чтобы получить интервал ( timedelta
).
Взгляните на модуль datetime и объекты timedelta. Вы должны создать объект datetime для времени начала и окончания, и когда вы вычтете их, вы получите timedelta.