I just found out there is a package called pendulum that have better support for ISO8601 formats.
This works exactly as I wanted.
from datetime import datetime, timedelta
import pendulum
interval: pendulum.Interval = pendulum.parse("2024-02-15T12:34:56/P1M16D")
start_date: datetime = interval.start # 2024-02-15T12:34:56
end_date: datetime = interval.end # 2024-03-31T12:34:56
time_delta: timedelta = interval.as_timedelta() # 45 days = 29 (leap year) + 16