#duration-string #human-readable #duration-parser #date-time #chrono #relative #hours

humantime_to_duration

解析人类可读的相对时间字符串并将它们转换为持续时间

0.3.1 2023年6月6日
0.3.0 2023年6月3日
0.2.1 2023年5月12日
0.1.3 2023年4月25日

143日期和时间 中排名

Download history 2/week @ 2024-03-15 42/week @ 2024-03-29 9/week @ 2024-04-05

7,455 每月下载量

MIT 许可证

17KB
245

humantime_to_duration

Crates.io License CodeCov

一个 Rust 包,用于解析人类可读的相对时间字符串并将它们转换为 Duration

特性

  • 解析多种人类可读的时间格式。
  • 支持正负持续时间。
  • 允许链式时间单位(例如,“1小时2分钟”或“2天和2小时”)。
  • 根据指定日期计算持续时间。
  • 依赖于 Chrono

用法

将其添加到您的 Cargo.toml

[dependencies]
humantime_to_duration = "0.3.0"

然后,导入包并使用 from_strfrom_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_strfrom_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_strfrom_str_at_date 函数返回

  • Ok(Duration) - 如果输入字符串可以解析为相对时间
  • Err(ParseDurationError) - 如果输入字符串不能解析为相对时间

如果输入字符串不能解析为相对时间,此函数将返回 Err(ParseDurationError::InvalidInput)

模糊测试

要运行模糊测试

$ cargo fuzz run fuzz_from_str

许可证

本项目采用MIT许可证

依赖项

~3–9.5MB
~79K SLoC