2013-09-12 3 views
1

Я не могу заставить это работать. Я устал искать, но ничего не могу найти. У меня нет даты, у меня есть время (01:45, 05:30).Разница между двумя временами python

Я использую только библиотеку «Время», в настоящее время у меня есть код выше, который дает мне минуты между часами. Но этого недостаточно.

В этом примере, конечный результат должен быть:

225 минут

3 часа (закругленные вниз)

hour_beg = '01:45' 
hour_close = '05:30' 

hours_begin = int(hour_beg.split(':')[0]) # 01 
minutes_begin = int(hour_beg.split(':')[1]) # 45 
hours_end = int(hour_close.split(':')[0]) # 05 
minutes_end = int(hour_close.split(':')[1]) # 30 

total_minutes = abs((hours_begin - hours_end) * 60) 

Как достигли этого?

+1

... все предполагая, что временные метки принадлежат тот же день? То есть, что, если у вас есть «от 23: 00» до «01: 00 »? – Micke

+0

Не будет проблемой, я могу проверить, меньше ли время начала, чем время окончания. Но это хороший момент. – user2742861

ответ

2

Как насчет (hours_end - hours_begin) * 60 + minutes_end - minutes_begin.

+0

Привет (первое спасибо), я получил тот же результат несколько моментов из публикации этой темы в этом URL: [link] (http://stackoverflow.com/questions/3518819/algorithm-needed-to-calculate-difference-between -дво-раз) Моя проблема теперь в круглых значениях. У меня есть программа, которая дает в часах -> ~ 3,45 -> минуты -> 225 Я пробовал: 'hours_result = round (abs (hours_begin - hours_end), 2)', но это дает мне: часы -> 4 , 00 -> минуты -> 225. Как я могу достичь этого «3,45»? – user2742861

+0

Почему вы все еще используете 'hours_begin - hours_end' вместо указанного выше выражения? – dan3

+0

Потому что мне нужно получить минуты и часы. 'minutes_total = (hours_end - hours_begin) * 60 + minutes_end - minutes_begin' ' hours_result = round (abs (hours_begin - hours_end), 2) ' – user2742861

2

Используйте дату и время, чтобы получить timedelta.

import datetime 
hour_beg = '01:45' 
hour_close = '05:30' 

first = datetime.datetime.strptime(hour_beg, '%H:%M') 
second = datetime.datetime.strptime(hour_close, '%H:%M') 
delta = first - second 
+1

Возможно, вам понадобится 'datetime.datetime.strptime (hour_beg, '% H:% M')' – dawg

+0

спасибо, конечно же – GoingTharn

4
>>> from dateutil import parser 
>>> time1 = parser.parse("01:45") 
>>> time2 = parser.parse("05:30") 
>>> print (time2-time1).seconds 
13500 
>>> print (time2-time1).seconds/60 
225 
Смежные вопросы