Supplemental ISO8601 duration format support for datetime.timedelta
AGPL-3.0 License
The timedelta-isoformat <https://pypi.org/project/timedelta-isoformat/>
_ library provides supplemental ISO 8601 duration <https://en.wikipedia.org/wiki/ISO_8601#Durations>
_ support to the datetime.timedelta <https://docs.python.org/3/library/datetime.html#datetime.timedelta>
_ class.
The library is pure-Python, and does not depend upon regular expressions.
Functionality is provided in a subclass of datetime.timedelta
that implements additional isoformat()
and fromisoformat(duration_string)
methods.
.. code-block:: pycon
from timedelta_isoformat import timedelta from datetime import datetime
first = datetime(year=2022, month=10, day=2) second = datetime(year=2022, month=11, day=27, hour=14)
td = timedelta(seconds=(second - first).total_seconds()) td.isoformat() 'PT1358H'
first + timedelta.fromisoformat('PT1358H') datetime.datetime(2022, 11, 27, 14, 0)
A variety of ISO 8601 duration parsers exist across a range of programming languages, and many of them have made slightly different design decisions.
Some of the significant design decisions made within this library are:
PT1H
is considered valid; P-2D
is not)P1DT
is considered valid)PT20:59:01
is within limits; PT20:60:01
is not)-O command-line flag when invoking the Python interpreter <https://docs.python.org/3/using/cmdline.html#cmdoption-O>
_) to improve runtime performance