Преобразование строки в datetime.timedelta

У меня есть входная строка в виде сотен или тысяч часов, например:

1000:50 (One thousand hours and 50 minutes)

Мне нужно преобразовать его в объект timedelta, чтобы вставить его в качестве поля DurationField в Django Model. До сих пор я пытался использовать datetime.strptime, но ошибка выдает следующее:

time data '1000:50' does not match format '%H:%M'

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

Вы получаете ошибку, поскольку %H только для формата 24 часа, т.е. 0...23

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

import re
from datetime import timedelta


your_string = "1000:50 (One thousand hours and 50 minutes)"
hours, minutes = re.findall('(\d+):(\d+)', your_string)[0]
duration = timedelta(hours=int(hours), minutes=int(minutes))
Вернуться на верх