使用 LUIS 引擎,我收到 XXXX-10-28
作为实体值中的日期。
我尝试使用 Chronic
进行解析,但 Chronic 不适用于 timex
库/格式。
我期待以下字符串作为输入
XXXX-10-28
应等于2018-10-28
( future )2018-10-02TMO
应等同于2018-10-02
即明天
请注意 XXXX-XX
代表 YYYY-MM
但它没有 numeric
值
在 ASP.NET Core
中是否有任何库或方法可以将此类字符串解析为有效的 datetime
格式?
最佳答案
您可以使用 Microsoft.Recognizers.Text.DataTypes.TimexExpression 包 from NuGet .它是 Microsoft Recognizers Text 项目的一部分 here on github
我发现了两种使用这个库的方法:
使用 TimexProperty 解析表达式并自己猜测年份:
var parsed = new Microsoft.Recognizers.Text.DataTypes.TimexExpression.TimexProperty("XXXX-10-28");
Console.WriteLine(parsed.Year); // = null
Console.WriteLine(parsed.Month); // = 28
Console.WriteLine(parsed.DayOfMonth); // = 10
使用 TimexResolver 解析时间
var resolution = Microsoft.Recognizers.Text.DataTypes.TimexExpression.TimexResolver.Resolve(new [] { "XXXX-10-28" }, System.DateTime.Today)
resolution.Values
将包含一个包含两个解析条目的数组,一个用于该日期的前一次出现,一个用于该日期的下一次出现(基于您传递到 Resolve 的 DateTime方法。
请注意,根据个人经验和我在 github 上看到的内容,在撰写本文时,这个包可能相当 buggy使用更高级的表达式。
关于c# - 在 .NET Core 中解析 Timex 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52593835/