#parser-combinator #parser #parse-date #language-specific #numeric-dates #chrono-dates #nom-extension

nom-date-parsers

使用 nom 帮助编写的组合器,用于解析数值和特定语言的日期

5 个版本 (2 个稳定版)

1.1.0 2024 年 8 月 8 日
1.0.0 2024 年 8 月 4 日
0.2.0 2024 年 7 月 22 日
0.1.1 2024 年 7 月 18 日
0.1.0 2024 年 7 月 17 日

日期和时间 分类中排名 192

Download history 202/week @ 2024-07-13 178/week @ 2024-07-20 29/week @ 2024-07-27 209/week @ 2024-08-03 15/week @ 2024-08-10

每月下载量 463

MIT 许可证 MIT

49KB
691 代码行

nom-date-parsers

GitHub Actions Workflow Status docs.rs Crates.io Version Crates.io Total Downloads

使用 nom 编写的组合器集合,用于解析 numericlanguage-specific 日期。

目前支持以下语言

  • Russian (ru 功能标志)
  • English (en 功能标志,默认启用)

此 crate 可用于编写其他解析器或独立使用,以从字符串中解析 chrono::NaiveDate

此 crate 使用 chrono::Local 类型进行几乎所有日期计算。

为什么?

我在开发我的电报机器人,并给我的用户提供了一种通过格式为 dd-mm-yyyy 的日期来获取信息的方式。确实,其中一些用户收到了正确的格式并成功接收了他们想要的内容。而其他人则只输入了一些与日期略有相似的内容,并抱怨机器人无法理解他们。因此,这个 crate 试图解决这个问题。

数值日期

可以识别以下模式

  • dd/mm/y4
  • mm/dd/y4
  • y4/mm/dd
  • dd
  • dd/mm
  • mm/dd

可以使用除符号以外的其他分隔符

  • /
  • -
  • .
  • 任意数量的空格(空白和制表符)

分隔符不需要在所有地方匹配,因此 dd/mm-y4 或甚至 dd mm.y4 也是可接受的格式

要解析 chrono::NaiveDate 值,可以使用以下方法

如果不存在日期部分,则使用今天的相应日期部分。

特定语言的日期

每个特定语言的解析器都放在相应的 功能标志ruen)后面,除了默认可用的 en

有时候,接收一个 相对日期星期完全简称)的日期也是很酷的

有关使用方法的更多信息,请参阅函数的文档

依赖项

~2MB
~37K SLoC