2016-01-12 2 views
2

У меня проблема с моим кодом. Я пытаюсь вычитая два раза, но это дает мне ошибку:вычитание два раза в python

TypeError: unsupported operand type(s) for -: 'time.struct_time' and 'time.struct_time' 

Ошибка прыгают на этой линии:

diff = (end_dt - start_dt) 

Когда я пытаюсь это:

start = "09:35:23" 
end = "10:23:00" 
start_dt = time.strptime(start, '%H:%M:%S') 
end_dt = time.strptime(end, '%H:%M:%S') 
diff = (end_dt - start_dt) 

Может вы, пожалуйста, помогите мне, как исправить ошибку, которую я получаю?

+3

Это намного лучше, чем ваша последняя попытка! Спасибо, что создали для нас настоящую [mcve]. Если бы вы отредактировали исходный вопрос по этому стандарту, я бы с радостью возобновил его. –

+0

Спасибо, мартин, так вы знаете, как исправить ошибку, которую я получаю? я не могу узнать, как! –

+0

У меня все еще есть вопрос для вас: какой результат для 'start =" 00:01:00 "и' end = "23:59:00" '? Как насчет 'start =" 23:59:00 "' и 'end =" 00:01:00 "'? Это вопрос полуночи, упомянутый по другому вопросу. –

ответ

2

Вы должны использовать datetime модуль:

import datetime 

start = "09:35:23" 
end = "10:23:00" 
start_dt = datetime.datetime.strptime(start, '%H:%M:%S') 
end_dt = datetime.datetime.strptime(end, '%H:%M:%S') 
diff = (end_dt - start_dt) 
print(diff) 

Выход

datetime.timedelta(0, 2857) 

Это создает два datetime объекты, start_dt и end_dt. Когда вы вычитаете один из другого, он возвращает timedelta.

+0

Вам нужно объяснить, что это создает объект timedelta, и что вы можете с этим сделать. –

+0

@ lambo477 Я не могу использовать модуль 'datetime', потому что я использую xbmc, и он будет работать только с' time.strptime'. Когда вы предложили мне использовать, это даст мне ошибку 'TypeError: атрибут типа 'NoneType' не является вызываемым' –

+0

@David, вам нужно будет уточнить эти детали в своем вопросе. 'datetime' является встроенным модулем Python, поэтому ожидается, что вы сможете его использовать ...! – gtlambert

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