0.3.1 |
|
---|---|
0.3.0 |
|
0.2.1 |
|
0.1.3 |
|
143 在 日期和时间 中排名
7,455 每月下载量
17KB
245 行
humantime_to_duration
一个 Rust 包,用于解析人类可读的相对时间字符串并将它们转换为 Duration
。
特性
- 解析多种人类可读的时间格式。
- 支持正负持续时间。
- 允许链式时间单位(例如,“1小时2分钟”或“2天和2小时”)。
- 根据指定日期计算持续时间。
- 依赖于 Chrono
用法
将其添加到您的 Cargo.toml
[dependencies]
humantime_to_duration = "0.3.0"
然后,导入包并使用 from_str
和 from_str_at_date
函数
use humantime_to_duration::{from_str, from_str_at_date};
use chrono::Duration;
let duration = from_str("+3 days");
assert_eq!(duration.unwrap(), Duration::days(3));
let today = Utc::today().naive_utc();
let yesterday = today - Duration::days(1);
assert_eq!(
from_str_at_date(yesterday, "2 days").unwrap(),
Duration::days(1)
);
支持格式
from_str
和 from_str_at_date
函数支持以下相对时间格式
num
unit
(例如,“-1小时”,“+3天”)unit
(例如,“小时”,“天”)- “now” 或 “today”
- “yesterday”
- “tomorrow”
- 对于过去使用 “ago”
- 使用 “and” 或 “,” 组合单位(例如,“2年1个月”,“1天,2小时”或“2周1秒”)
num
可以是正数或负整数。unit
可以是以下之一:“fortnight”,“week”,“day”,“hour”,“minute”,“min”,“second”,“sec”以及它们的复数形式。
返回值
from_str
和 from_str_at_date
函数返回
Ok(Duration)
- 如果输入字符串可以解析为相对时间Err(ParseDurationError)
- 如果输入字符串不能解析为相对时间
如果输入字符串不能解析为相对时间,此函数将返回 Err(ParseDurationError::InvalidInput)
。
模糊测试
要运行模糊测试
$ cargo fuzz run fuzz_from_str
许可证
本项目采用MIT许可证。
依赖项
~3–9.5MB
~79K SLoC