Вы можете использовать пакет Microsoft.Recognizers.Text.DataTypes.TimexExpression из NuGet .Это часть проекта Microsoft Recognizer Text здесь, на 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, который вы передаете в метод Resolve.
Обратите внимание, что из личного опыта и из того, что я видел на github, этот пакет на момент написания может быть весьма глючит с более продвинутыми выражениями.