Я работаю над алгоритмом в C # для вычисления прошлого DateTime на основе входной строки со следующими характеристиками:
Строка содержит целое число, за которым следуют «D», «M» или «Y», например «1D» или «90M».
Вывод будет DateTime.Now минус соответствующее количество дней, месяцев или лет.
Проблема, с которой я столкнулся, заключается в том, что если, например, я переключаю входную строку в регулярное выражение (D, M или Y) и вычитаю соответствующий TimeSpan из DateTime. Теперь новый конструктор TimeSpan () не принимает месяцы или годы, только дни.
if (new Regex(@"[0-9]+D").IsMatch(value))
{
newDate = DateTime.Now - TimeSpan(Int32.Parse(value.Replace("D", "")), 0, 0);
}
Эта логика хороша, если входная строка указана в днях, но конструктор для TimeSpan не принимает месяцы или годы, и было бы невероятно неточно, если бы я предполагал, что у каждого месяца было 30 дней или у каждого года 365 дней.
У кого-нибудь есть мысли о том, как реализовать этот алгоритм?
Спасибо!