Как получить временной интервал между двумя строками? - PullRequest
0 голосов
/ 25 января 2019

Я 2 раза хранил в отдельных строках в форме H:M Мне нужно получить разницу между этими двумя и уметь определить, сколько минут это равно.Я пытался datetime и timedelta, но я только начинающий, и я не совсем понимаю, как это работает.Я получаю ошибки атрибутов каждый раз.

Так что у меня есть a и b раз, и я должен получить их разницу в минутах

EG .if a = 14:08 and b= 14:50 разница должна быть 42

Как мне сделать это в python самым простым способом?также, в каких форматах мне нужно использовать каждый шаг?

Ответы [ 3 ]

0 голосов
/ 25 января 2019

Вы можете использовать datetime.strptime

также разница составляет 42, а не 4 50-8==42 Я предполагаю, что это была опечатка

from datetime import datetime

a,b = "14:08", "14:50"

#convert to datetime
time_a = datetime.strptime(a, "%H:%M")
time_b = datetime.strptime(b, "%H:%M")

#get timedelta from the difference of the two datetimes
delta = time_b - time_a

#get the minutes elapsed
minutes = (delta.seconds//60)%60

print(minutes)
#42
0 голосов
/ 26 января 2019

Вы можете получить разницу между datetime.timedelta объектами, созданными из заданных временных строк a и b, вычитая первое из второго и использовать метод total_seconds для получения временного интервала в секундах.с помощью которого вы можете конвертировать в минуты, разделив его на 60:

from datetime import timedelta
from operator import sub
sub(*(timedelta(**dict(zip(('hours', 'minutes'), map(int, t.split(':'))))) for t in (b, a))).total_seconds() // 60

Так что, учитывая a = '29:50' и b = '30:08', это возвращает:

18.0
0 голосов
/ 25 января 2019

Я предполагаю, что разница составляет 42, а не 4 (поскольку между 14:08 и 14:50 есть 42 минуты).

Если время всегда содержит строку длиной 5 символов, то это достаточно просто.

time1 = '14:08'
time2 = '15:03'
hours = int(time2[:2]) - int(time1[:2])
mins  = int(time2[3:]) - int(time1[3:])
print(hours)
print(mins)
print(hours * 60 + mins)

Печать:

1
-5
55
  • часов будет целочисленным значением из двух оставшихся цифр [: 1] вычитания второго и первого раз
  • минут будет целочисленным значением двух правых цифр [3:] вычитание второго и первого раз
  • Это печатает 55 ... с вашими значениями он печатает 42 (приведенный выше пример показывает, что он также работает при перемещении в течение целого часа.
...