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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for timedelta_isoformat-0.5.1.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0e45d4c4f3ed766243c56a5cb685c3f055f2dcf58372120fa842c4468f72a19 |
|
MD5 | 367ebbb5f1a777fc48ee5a408bced9f0 |
|
BLAKE2b-256 | 173ec690716a38841d52c28ca41552681a04aca2f2b8b4d6d4c1fc248215516c |