7 unstable releases (3 breaking)
0.4.2 | Nov 8, 2021 |
---|---|
0.4.1 | Nov 8, 2021 |
0.4.0 | Sep 18, 2021 |
0.3.0 | Jul 7, 2021 |
0.1.0 | Jul 4, 2020 |
#256 in Date and time
203 downloads per month
Used in 2 crates
31KB
660 lines
HTP
Work in progress Human Time Parser
This lib uses pest for parsing.
Example
use chrono::{Utc, TimeZone};
use htp::parse;
let now = Utc.datetime_from_str("2020-12-24T23:45:00", "%Y-%m-%dT%H:%M:%S").unwrap();
let expected = Utc.datetime_from_str("2020-12-18T19:43:00", "%Y-%m-%dT%H:%M:%S").unwrap();
let datetime = parse("last friday at 19:43", now).unwrap();
assert_eq!(datetime, expected);
Similar Crate
Why?
Tweak how time is parsed and interpreted inside my rust time tracking tool.
It's fun to write parsers once in while, pest is really nice.
What date format can it parse?
some examples:
4 min ago
,4 h ago
,1 week ago
,in 2 hours
,in 1 month
last friday at 19
,monday at 6 am
7
,7am
,7pm
,7:30
,19:43:00
now
,yesterday
,today
,friday
2020-12-25T19:43:00
It also supports interestingly-spaced inputs such as:
4 min ago
It is possible to try HTP
out using cargo run --example time_parser
:
example
cargo run --example time_parser last friday at 6
output
2020-07-03T06:00:00+02:00
Thanks to pest it also provides meaningful errors:
example
cargo run --example time_parser last friday at
output
--> 1:15
|
1 | last friday at
| ^---
|
= expected hms
Changelog
Please see the CHANGELOG for a release history.
Dependencies
~4MB
~75K SLoC