A fast, regular-expression based library for parsing dates, plus support for ISO 8601 durations.
Project description
nr.parsing.date
A fast, regular-expression based library for parsing dates, plus support for ISO 8601 durations.
Requirements
- Python 3.6+
Supported Date & Time Formats
%Y
– 4 digit year%m
– 2 digit month%d
– 2 digit day%H
– 2 digit hour%M
– 2 digit minute%S
– 2 digit second%f
– arbitrary precision milliseconds%z
– timezone offset ([+-]\d\d:?\d\d
offset orZ
for UTC)
Built-in format collections
ISO_8601
(see ISO 8601 on Wikipedia)JAVA_OFFSET_DATETIME
(see OffsetDateTime class on the Java 8 API documentation)
Features
- Easily extensible to support more date/time format options
- Date/time formats can use an extended regex-style mode to mark format options as optional (e.g.
the two formats
%Y
and%Y-%m
can be expressed in a single regex-style format string as%Y(-%m)?
)
Quickstart
from nr.parsing.date import duration, ISO_8601
ISO_8601.parse('2021-04-21T10:13:00.124+0000')
duration.parse('P3Y6M4DT12H30M5S')
Benchmark
The below benchmark compares the performance of testing various format-strings for ISO-8601
dates using the standard library, dateutil.parser.parse()
, dateutil.parser.isoparse()
and
the nr.parsing.date.ISO_8601.parse_datetime()
function.
Conclusion: Faster than the standard library but with the same flexibility (except for the missing support for most uncommon format options).
asv run
· Creating environments
· Discovering benchmarks
· Running 5 total benchmarks (1 commits * 1 environments * 5 benchmarks)
[ 0.00%] · For nr.parsing.date commit dd35e795 <develop>:
[ 0.00%] ·· Benchmarking virtualenv-py3.8-pandas-python-dateutil
[ 10.00%] ··· Running (benchmarks.DatetimeParsingSuite.time_datetime_datetime_strptime--).....
[ 60.00%] ··· benchmarks.DatetimeParsingSuite.time_datetime_datetime_strptime 2.22±0.3ms
[ 70.00%] ··· benchmarks.DatetimeParsingSuite.time_datetime_datetime_strptime_reversed 2.12±0.08ms
[ 80.00%] ··· benchmarks.DatetimeParsingSuite.time_dateutil_parser_isoparse 1.46±0.02ms
[ 90.00%] ··· benchmarks.DatetimeParsingSuite.time_dateutil_parser_parse 2.77±0.1ms
[100.00%] ··· benchmarks.DatetimeParsingSuite.time_nr_parsing_date_ISO_8601_parse_datetime 1.62±0.03ms
Copyright © 2020 Niklas Rosenstein
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 Distribution
Built Distribution
File details
Details for the file nr.parsing.date-1.0.1.tar.gz
.
File metadata
- Download URL: nr.parsing.date-1.0.1.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cf11c190b88540374629ad86c3f926e3f91604cb43a392d0290fa163552eaa5 |
|
MD5 | ca4bfca552429e69e4acd18254ae86ca |
|
BLAKE2b-256 | c5cec8cf7ac87d55205bc9d3a3f030a946f3d6527f98c75526356984afd610df |
File details
Details for the file nr.parsing.date-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: nr.parsing.date-1.0.1-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e21e7882ab7bbacf124c2689a218ab63a101d9e1e047bd7432caf3d79f242535 |
|
MD5 | 6814de423cd89fefedf041b3c12813cb |
|
BLAKE2b-256 | 434ffb2682aaf413a92635339325832e9266da5d199255a3f4163721cee10aaf |