htp (0.5.0)
Published 2023-09-23 08:41:27 +00:00 by lyssieth
Installation
[registry]
default = "forgejo"
[registries.forgejo]
index = "sparse+ " # Sparse index
# index = " " # Git
[net]
git-fetch-with-cli = truecargo add htp@0.5.0About this package
human time parser
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 monthlast friday at 19,monday at 6 am7,7am,7pm,7:30,19:43:00now,yesterday,today,friday2020-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
| ID | Version |
|---|---|
| chrono | ^0.4.31 |
| pest | ^2.7 |
| pest_derive | ^2.7 |
| thiserror | ^1.0.48 |
| time | ^0.3.28 |
Keywords
human
time
parser
chrono
Details
2023-09-23 08:41:27 +00:00
Assets (1)
Versions (3)
View all
Cargo
36
PicoJr <picojr_dev@gmx.com>
Lys <lys@lys.ee>
MIT OR Apache-2.0
17 KiB
htp-0.5.0.crate
17 KiB