Is there an easy way to convert ISO 8601 duration to timedelta?

Alkindus picture Alkindus · May 2, 2016 · Viewed 10.2k times · Source

Given a ISO 8601 duration string, how do I convert it into a datetime.timedelta?

This didn't work:

timedelta("PT1H5M26S", "T%H%M%S")

A timedelta object represents a duration, the difference between two dates or times (https://docs.python.org/3/library/datetime.html#datetime.timedelta). ISO 8601 durations are described here: https://en.wikipedia.org/wiki/ISO_8601#Durations

Answer

Alkindus picture Alkindus · May 2, 2016

I found isodate library to do exactly what I want

isodate.parse_duration('PT1H5M26S')
  • You can read the source code for the function here