Crates.io | htp |
lib.rs | htp |
version | 0.4.2 |
source | src |
created_at | 2020-07-04 20:35:48.682047 |
updated_at | 2021-11-08 16:52:45.451917 |
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 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
Please see the CHANGELOG for a release history.