2016-08-04 7 views
1

Я принимаю время в качестве ввода от пользователя в формате HH:MM. Скажем 00:00, и теперь я хочу продолжать добавлять минутку и делать это 00:01, 00:02 и так далее.Строка времени python в часах и минутах и ​​вычисление разницы

Кроме того, я беру два входа от пользователя start_time и end_time в виде строк. Как я могу рассчитать разницу между этими двумя временами в минутах?

Я новичок в Python, и любая помощь будет оценена!

Я использую следующий код:

#to calculate difference in time 
time_diff = datetime.strptime(end_time, '%H:%M') - datetime.strptime(start_time, '%H:%M') 
minutes = int(time_diff.total_seconds()/60) 
print minutes 

#to convert string to time format HH:MM 
start_time = datetime.strptime(start_time, '%H:%M').time() 

#to increment time by 1 minute 
start_time = start_time + datetime.timedelta(minutes=1) 

Я не в состоянии увеличивать start_time с помощью timedelta.

+0

Можете ли вы показать какие-либо попытки, которые вы сделали, и где у вас проблемы? – James

+0

@James Я добавил свой код в описание. Пожалуйста, проверь это. –

ответ

1
import datetime 

time_diff = datetime.datetime.strptime(end_time, '%H:%M') - datetime.datetime.strptime(start_time, '%H:%M') 
minutes = int(time_diff.total_seconds()/60) 
print minutes 

datetime является класс datetime модуля, который имеет classmethod под названием strptime. Номенклатура немного запутанна, но это должно работать так, как вы ее намереваетесь.

Что касается добавления времени дельты, вам необходимо хранить время начала как datetime объекта для того, чтобы получить, что для работы:

start_datetime = datetime.datetime.strptime(start_time, '%H:%M') 
start_datetime = start_datetime + datetime.timedelta(minutes=1) 
print start_datetime 
+0

Спасибо! Я сделал то же самое, но теперь мне трудно увеличить время на 1 минуту. –

+0

Да, сначала не видел эту часть вопроса - я ответил на это сейчас – James

0

Первой часть вашего вопроса, вы можете использовать datetime module:

from datetime import datetime as dt 
from datetime import timedelta as td 
UsrInput = '00:00' 
fmtString = '%H:%M' 
myTime = dt.strptime(UsrInput, fmtString) 
increment = td(0,1) 
for count in range(10): 
    myTime += increment 
    print (dt.strftime(myTime, fmtString)) 

Вторая часть также будет использовать DateTime, как таковой:

from datetime import datetime as dt 
from datetime import timedelta as td 
start_time = '00:01' 
end_time = '00:23' 
fmtString = '%H:%M' 
myStart = dt.strptime(start_time, fmtString) 
myEnd = dt.strptime(end_time, fmtString) 
difference = myEnd - myStart 
print(td.strftime(difference, '%M') 
+0

Это увеличивает секунды, а не минуты. Как я должен это делать? –

Смежные вопросы