使用LUIS,我在实体值中接收XXXX-10-28作为日期。
我尝试过使用Chronic来解析,但是慢性病并不适用于timex库/格式。
我期望下面的字符串作为输入
XXXX-10-28应该等同于2018-10-28 (未来)2018-10-02TMO应等同于2018-10-02,即tomorrow请注意,XXXX-XX表示YYYY-MM,但它没有numeric值
是否有任何库或方法将这些字符串解析为有效的datetime格式的ASP.NET Core格式?
发布于 2019-06-13 21:41:03
您可以使用Microsoft.Recognizers.Text.DataTypes.TimexExpression包来自NuGet。它是微软识别器文本项目在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将包含一个包含两个解析项的数组,一个用于该日期的前一次出现,另一个用于该日期的下一次出现(基于传递给解析方法的DateTime )。
请注意,从个人经验和我在github上看到的情况来看,在编写本文时,这个包可以使用更高级的表达式非常小马车。
发布于 2018-10-01 15:04:40
使用自定义格式模式:
using System;
using System.Globalization;
class MainClass {
public static void Main (string[] args) {
var format = "1234-10-30";
var date = DateTime.ParseExact(format, "yyyy-MM-dd", CultureInfo.InvariantCulture);
Console.WriteLine (date.ToString("dd/MM/yyyy"));
}
}发布于 2018-10-01 15:01:09
您可以使用DateTime.TryParse或DateTime.TryParseExact以及自定义日期/时间格式字符串来完成这一任务。
根据您的示例,我认为您需要的格式字符串是yyyy-MM-dd,尽管您可能需要稍微调整一下。
示例:
var input = "2018-10-28";
var format = "yyyy-MM-dd";
DateTime parsed;
if (DateTime.TryParseExact(input, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out parsed))
{
// Do whatever you want with "parsed"
}https://stackoverflow.com/questions/52593835
复制相似问题