Skip to main content

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 or Z 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


Download files

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

Source Distribution

nr.parsing.date-1.0.2.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

nr.parsing.date-1.0.2-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file nr.parsing.date-1.0.2.tar.gz.

File metadata

  • Download URL: nr.parsing.date-1.0.2.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.1

File hashes

Hashes for nr.parsing.date-1.0.2.tar.gz
Algorithm Hash digest
SHA256 473ae486a5bcdee77a8449dd9ab26d7b13a51f883c8c7106ae4b609dd26af385
MD5 c3cad358ec64c2c68029422f5d70c363
BLAKE2b-256 5597a11f536458092935226c02cde29b8723b024b1f28444511b8d6b26883e15

See more details on using hashes here.

File details

Details for the file nr.parsing.date-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: nr.parsing.date-1.0.2-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/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.1

File hashes

Hashes for nr.parsing.date-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1fba4a9bcbb583f393aec84f6926caad02352214e7a37180b246df4d85a7d554
MD5 db28dbbbdc192ad5a91c4d136da884a4
BLAKE2b-256 70a664d92d873788666fd3debfca672e25421f6183b4e28a4d0900d1898fcbb9

See more details on using hashes here.

Supported by

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