Skip to main content

Supplemental ISO8601 duration format support for datetime.timedelta

Project description

The timedelta-isoformat library provides supplemental ISO 8601 duration support to the 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.

Usage

>>> 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()
'P56DT14H'
>>>
>>> first + timedelta.fromisoformat('P56DT14H')
datetime.datetime(2022, 11, 27, 14, 0)

Design decisions

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:

  • Values in parsed duration strings must be zero-or-greater (PT1H is considered valid; P-2D is not)

  • Empty time segments at the end of duration strings are allowed (P1DT is considered valid)

  • Measurement limits are checked within date/time segments (PT20:59:01 is within limits; PT20:60:01 is not)

  • Measurement values are parsed into floating-point values (at the time of writing, precise procedural algorithms to parse base-ten strings into integers for large inputs are not practical – or not widely known)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

timedelta_isoformat-0.6.2.8-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file timedelta_isoformat-0.6.2.8-py3-none-any.whl.

File metadata

File hashes

Hashes for timedelta_isoformat-0.6.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 3ef080cfd0ef1c25684ee70e3f64405fd59bf1683ebf9f8db0505fb23e16b3f0
MD5 32e0476329adc14429e0eeccc034d689
BLAKE2b-256 876650fb25348975b7fe0d751d253da5e4f7edfc5aacef2721d60f96d1d19830

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page