C# 如何解析相对时间?
这个问题是另一个问题的另一面 给定一段相对时间内的一些人工输入,如何解析它?默认情况下,您可以从C# 如何解析相对时间?,c#,parsing,time,language-agnostic,C#,Parsing,Time,Language Agnostic,这个问题是另一个问题的另一面 给定一段相对时间内的一些人工输入,如何解析它?默认情况下,您可以从DateTime.Now()偏移,但也可以选择从另一个DateTime偏移 (更喜欢C#的答案) 输入示例: “20分钟后” “5小时前” “3h 2m” “下周” 编辑:假设我们可以对输入定义一些限制。这类代码在web上很有用。它正在构建一种用于数据处理的DSL(域特定语言)。我不知道是否有人为.NET做过一个,但DSL的构造相当简单: 准确地定义语言,您将接受哪些输入形式,以及如何处理歧义 为
DateTime.Now()
偏移,但也可以选择从另一个DateTime
偏移
(更喜欢C#的答案)
输入示例:
- “20分钟后”
- “5小时前”
- “3h 2m”
- “下周”
非常接近你想要实现的目标。这不是最优雅的解决方案,但肯定会为您节省一些工作。谷歌搜索会找到库(与相关),它正是为此而设计的。它是开源的(Apache许可证),用Python编写。这似乎相当复杂--从主页上看: parsedatetime能够解析,例如 例如,以下内容:
* Aug 25 5pm
* 5pm August 25
* next saturday
...
* tomorrow
* next thursday at 4pm
* at 4pm
* eod
* in 5 minutes
* 5 minutes from now
* 5 hours before now
* 2 days from tomorrow
因为它是用纯Python实现的,并且不使用任何花哨的东西,所以它很有可能与兼容,所以您可以将它与.net一起使用。如果你特别想要一个C#解决方案,你可以根据他们使用的算法写一些东西
它还附带了一系列的单元测试。ruby的人试图用一个名为Chronic的解析器来解决这个问题