7个不稳定版本 (3个破坏性更新)

0.4.2 2021年11月8日
0.4.1 2021年11月8日
0.4.0 2021年9月18日
0.3.0 2021年7月7日
0.1.0 2020年7月4日

#219日期和时间


2 个包 使用

MIT/Apache

31KB
660

htp crate tbl documentation GitHub license

HTP

进行中 Human Time Parser

此库使用 pest 进行解析。

示例

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);

类似包

为什么?

调整我在 rust 时间跟踪工具 中解析和解释时间的方式。

偶尔写一下解析器很有趣,pest 真的很棒。

它可以解析哪些日期格式?

请参见 time_clue 语法规则

一些示例

  • 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

它还支持有趣的空格输入,例如

4           min      ago

可以使用 HTP 尝试以下命令:cargo run --example time_parser

示例

cargo run --example time_parser last friday at 6

输出

2020-07-03T06:00:00+02:00

由于 pest,它还提供了有意义的错误

示例

cargo run --example time_parser last friday at

输出

 --> 1:15
  |
1 | last friday at
  |               ^---
  |
  = expected hms

变更日志

请参阅 CHANGELOG 了解发布历史。

依赖关系

~4MB
~76K SLoC