3 个版本 (重大变更)

0.6.0 2024年5月21日
0.5.0 2023年9月14日
0.4.0 2023年6月9日

日期和时间 中排名第 34

Download history 6713/week @ 2024-05-01 3227/week @ 2024-05-08 4399/week @ 2024-05-15 3591/week @ 2024-05-22 2983/week @ 2024-05-29 1670/week @ 2024-06-05 2218/week @ 2024-06-12 3403/week @ 2024-06-19 5221/week @ 2024-06-26 4693/week @ 2024-07-03 2809/week @ 2024-07-10 2983/week @ 2024-07-17 4427/week @ 2024-07-24 2417/week @ 2024-07-31 3345/week @ 2024-08-07 1979/week @ 2024-08-14

每月下载量 12,605
用于 3 Crates(2 个直接使用)

MIT 许可证

50KB
1K SLoC

parse_datetime

Crates.io License CodeCov

一个用于解析可读的相对时间字符串和可读的日期时间字符串并将它们转换为 DateTime 的 Rust 库。

特性

  • 解析各种可读的和标准的时间格式。
  • 支持正负持续时间。
  • 允许链式使用时间单位(例如,“1小时2分钟”或“2天2小时”)。
  • 计算相对于指定日期的持续时间。
  • 依赖于 Chrono

用法

将其添加到您的 Cargo.toml

[dependencies]
parse_datetime = "0.5.0"

然后,导入库并使用 parse_datetime_at_date 函数

use chrono::{Duration, Local};
use parse_datetime::parse_datetime_at_date;

let now = Local::now();
let after = parse_datetime_at_date(now, "+3 days");

assert_eq!(
  (now + Duration::days(3)).naive_utc(),
  after.unwrap().naive_utc()
);

对于日期时间的解析,导入 parse_datetime 函数

use parse_datetime::parse_datetime;
use chrono::{Local, TimeZone};

let dt = parse_datetime("2021-02-14 06:37:47");
assert_eq!(dt.unwrap(), Local.with_ymd_and_hms(2021, 2, 14, 6, 37, 47).unwrap());

支持的格式

parse_datetimeparse_datetime_at_date 函数支持绝对日期时间和以下相对时间

  • num unit(例如,“-1小时”,“+3天”)
  • unit(例如,“小时”,“天”)
  • “现在”或“今天”
  • “昨天”
  • “明天”
  • 对于过去使用“ago”
  • unit 一起使用“next”或“last”(例如,“下周”,“去年”)
  • 使用“and”或“,”组合单位(例如,“2年1个月”,“1天2小时”或“2周1秒”)
  • Unix 时间戳(例如,“@0”,”@1344000”)

num 可以是正整数或负整数。unit 可以是以下之一:“fortnight”,“week”,“day”,“hour”,“minute”,“min”,“second”,“sec”及其复数形式。

返回值

parse_datetime 和 parse_datetime_at_date

parse_datetimeparse_datetime_at_date 函数返回

  • Ok(DateTime<FixedOffset>) - 如果输入字符串可以解析为日期时间
  • Err(ParseDateTimeError::InvalidInput) - 如果输入字符串无法解析

模糊测试工具

运行模糊测试工具

$ cd fuzz
$ cargo install cargo-fuzz
$ cargo +nightly fuzz run fuzz_parse_datetime

许可证

本项目的许可协议为 MIT 许可协议

注意

在某个阶段,这个包被称为 humantime_to_duration。它已经被重命名以涵盖更多情况。

依赖项

~4–10MB
~98K SLoC