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
Hashes for nr.parsing.date-1.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e14541c9596014d5a631031be725dc303ff78062ffdc5b34a30712faf11a914 |
|
MD5 | d2789fb4d13a4491a68efdceb28b96af |
|
BLAKE2b-256 | 8d09c98add9cc28c896fae8383b2291e9e418f40d56a9714a647b7edb89da844 |