| Crates.io | htp |
| lib.rs | htp |
| version | 0.4.2 |
| created_at | 2020-07-04 20:35:48.682047+00 |
| updated_at | 2021-11-08 16:52:45.451917+00 |
| description | human time parser |
| homepage | |
| repository | https://github.com/PicoJr/htp |
| max_upload_size | |
| id | 261425 |
| size | 51,328 |
Work in progress Human Time Parser
This lib uses pest for parsing.
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);
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.
some examples:
4 min ago, 4 h ago, 1 week ago, in 2 hours, in 1 monthlast friday at 19, monday at 6 am7, 7am, 7pm, 7:30, 19:43:00now, yesterday, today, friday2020-12-25T19:43:00It 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
Please see the CHANGELOG for a release history.