5 releases (2 stable)
1.1.0 | Aug 8, 2024 |
---|---|
1.0.0 | Aug 4, 2024 |
0.2.0 | Jul 22, 2024 |
0.1.1 | Jul 18, 2024 |
0.1.0 | Jul 17, 2024 |
#215 in Date and time
225 downloads per month
49KB
691 lines
The bunch of combinators written with help of nom to parse the numeric
and language-specific
dates.
Currently the following languages are supported:
Russian
(ru
feature flag)English
(en
feature flag, enabled by default)
This crate can be used to write other parsers or standalone to parse chrono::NaiveDate
s from strings.
This crate uses chrono::Local
type for almost all date computations.
Why?
I work on my telegram bot and provide to my users the way to get some information by the date in the format: dd-mm-yyyy. Indeed some of them get the correct format and successfully receive what they want. Others just throw something vaguely reminiscent of the date and complain that bot can't understand them. So, this crate tries to solve this problem.
Numeric dates
The following patterns can be recognized
- dd/mm/y4
- mm/dd/y4
- y4/mm/dd
- dd
- dd/mm
- mm/dd
Instead of the /
symbol the other separators can be used:
/
-
.
- any number of spaces (whitespaces and tabs)
It's not necessary that separators match in every place, so the dd/mm-y4
or even dd mm.y4
are acceptable formats
To parse the chrono::NaiveDate
value you can use the following methods:
In case of absence of any date part the corresponding date part of today is used.
Language-specific days
Each language-specific parsers are put behind the corresponding feature flag
(ru
or en
), except the en
which is available by default.
Sometimes its cool to receive a date for a relative day
or weekday
(fully
or shortly
named):
For more info of usage see the documentation of functions
Dependencies
~2MB
~37K SLoC