A simple and fast date parsing library. Uses dateutil for timezone offset support.
Project description
Note: This package is in the dangerous land of
0.x.y
versions and may be subject to breaking changes with minor version increments.
nr.parsing.date
This package provides a fast parser for fixed format date strings with support for timezone offsets. The goal of this package is to
- bring support for timezone offsets to Python 2.7
- be faster than
dateutil.parser.parse()
You can control the regex backend with the PYTHON_NR_DATE_REGEX_BACKEND
environment variable. The default is re
. You can use this variable to
make it use the regex
module instead.
Currently supported format options are:
%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)
The date formats are extensible by using the register_format_option()
function or creating a new FormatOptionSet
.
API
BaseFormatOption()
Base class for format options.
FormatOption(char, dest, regex, parser, render)
Useful class for creating a new format options.
TimezoneFormatOption()
Special format option implementation for matching timezone offset.
FormatOptionSet()
Represents a set of BaseFormatOption
objects. Use the create_date_format()
method to create a DateFormat
object from this set and a format string.
DateFormat(string, option_set=None)
Creates a new parser and formatter for dates from a template string. It is
recommendable to use FormatOptionSet.create_date_format()
instead to make
use of caching.
DateFormatSet(name, formats)
A collection of DateFormat
objects that can be parsed successively until a
first match is found. The format()
method will use the first format in the
set.
root_option_set
A global FormatOptionSet
.
register_format_option()
Add a new format option to the root_option_set
. This is the same as calling
root_option_set.add()
.
parse_date(string, fmt)
Parses the date string using the specified fmt into a datetime.datetime
object.
format_date(date, fmt)
Formats the date using the specified fmt into a string.
create_format_set(name, formats)
Creates a new DateFormatSet
with the specified formats.
Iso8601()
Iso8601.parse(s)
Iso8601.format(dt)
JavaOffsetDatetime(require_timezone=True)
JavaOffsetDatetime.parse(s)
JavaOffsetDatetime.format(dt)
Benchmarks
TODO
Future
- Vendor
dateutil.tz
module?
Changelog
v0.1.0 (2020-03-19)
ISO_8601
andJAVA_OFFSET_DATETIME
renamed toIso8601
andJavaOffsetDatetime
Iso8601
andJavaOffsetDatetime
are now classesJavaOffsetDatetime()
can now be instantiated passingrequire_timezone=False
to make the timezone specified in the date optional.TimezoneFormatOption
now raises an error ifdatetime.tzinfo
isNone
v0.0.1 (2020-02-24)
- Initial version
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-0.6.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cc5e1bf5d9a28c7e93c2c6417958857eef752bf166f777102c60b304b5f020d |
|
MD5 | ea9176b1c2750dacd8d650e76e402a1a |
|
BLAKE2b-256 | 8b350a364445def1d2569ae8512a49fadd186742df412daaecf725d212ea9b1f |