15 个版本 (稳定)
使用旧版 Rust 2015
新版本 2.0.1 | 2024 年 8 月 18 日 |
---|---|
2.0.0 | 2023 年 8 月 24 日 |
1.5.0 | 2023 年 6 月 9 日 |
1.4.0 | 2023 年 3 月 25 日 |
0.9.1 | 2018 年 7 月 20 日 |
在 日期和时间 分类中排名 23
每月下载量 14,150
在 20 个包中使用(其中 6 个直接使用)
150KB
4K SLoC
dtparse
功能齐全的“即使我都不懂”的时间解析器。设计用于接收字符串并返回合理的日期和时间。
dtparse 的基础是 dateutil
库,该库擅长处理“有趣”的字符串,并尝试理解其中包含的日期和时间。以下是一些测试用例中的快速示例,以提供一些上下文
extern crate chrono;
extern crate dtparse;
use chrono::prelude::*;
use dtparse::parse;
assert_eq!(
parse("2008.12.30"),
Ok((NaiveDate::from_ymd(2008, 12, 30).and_hms(0, 0, 0), None))
);
// It can even handle timezones!
assert_eq!(
parse("January 4, 2024; 18:30:04 +02:00"),
Ok((
NaiveDate::from_ymd(2024, 1, 4).and_hms(18, 30, 4),
Some(FixedOffset::east(7200))
))
);
如果我们稍微深入了解实现,我们甚至可以处理模糊字符串,其中日期和时间不是唯一的内容!
extern crate chrono;
extern crate dtparse;
use chrono::prelude::*;
use dtparse::Parser;
use std::collections::HashMap;
let mut p = Parser::default();
assert_eq!(
p.parse(
"I first released this library on the 17th of June, 2018.",
None, None,
true /* turns on fuzzy mode */,
true /* gives us the tokens that weren't recognized */,
None, false, &HashMap::new()
),
Ok((
NaiveDate::from_ymd(2018, 6, 17).and_hms(0, 0, 0),
None,
Some(vec!["I first released this library on the ",
" of ", ", "].iter().map(|&s| s.into()).collect())
))
);
更多示例可以在 示例 目录中找到。
用法
dtparse
需要 Rust 版本 1.28 或更高版本才能构建,但已在 Windows、OSX、BSD、Linux 和 WASM 上进行测试。构建还针对 iOS 和 Android SDK 进行了编译,但未对其进行测试。
依赖项
~1.5–7MB
~35K SLoC