#python-3.x #string #datetime
#python-3.x #строка #дата-время
Вопрос:
У меня есть строки, которые мне нужно преобразовать во времена. Примерами являются:
str1 = '23:11'
str2 = '2:23'
str3 = '1:12:13'
Я могу легко преобразовать первую строку, используя:
print(cleant,(datetime.strptime(cleant,"%M%S")).strftime("%M:%S"))
Если я попытаюсь сделать то же самое для str2 и 3, то первые 2 цифры будут приняты за минуты или часы соответственно, а к началу секунд добавляется 0, и результаты отображаются как:
- 22:03
- 11:21:03
Как я могу сделать так, чтобы 0 было добавлено к первому разделу времени? Если нет часа, но меньше 10 минут, то там добавляется 0, если час существует, но меньше 10, там добавляется 0. Возможно, есть формат, которого мне не хватает, который datetime
уже есть.
Комментарии:
1. Похоже, что разделение на
:
и построение datetime из фрагментов было бы проще, чем возиться с разными форматами дляstrptime
2. Мне трудно понять, как связаны ваши примеры и «результаты». Каков ваш ввод, каков желаемый результат?
Ответ №1:
Я думаю, вы пропустили :
в strptime
. Попробуйте использовать
try:
# this handles 23:11 and 2:23
datetime.strptime(cleant,"%M:%S")
except ValueError:
# this handles 1:12:13
datetime.strptime(cleant,"%H:%M:%S")
Комментарии:
1. Я добавил .time() в конец, поскольку мне нужна была только часть времени. Это отлично сработало для того, что мне нужно. Еще раз спасибо