在C#中计算过去的日期时间

Nic*_*aro 6 c# datetime timespan

我正在使用C#中的算法来根据具有以下特征的输入字符串计算过去的DateTime:

该字符串包含一个整数,后跟"D","M"或"Y",例如"1D"或"90M".

输出将是DateTime.Now减去相应的天数,月数或年数.

我遇到的问题是,例如,如果我在Regex(D,M或Y)上切换输入字符串并从DateTime.Now中减去相应的TimeSpan,则新的TimeSpan()构造函数不接受数月或数年,只有几天

if (new Regex(@"[0-9]+D").IsMatch(value))
{
    newDate = DateTime.Now - TimeSpan(Int32.Parse(value.Replace("D", "")), 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

如果输入字符串是几天,这个逻辑很好,但TimeSpan的构造函数不接受数月或数年,如果我假设每个月有30天,或者每年有365天,这将是非常不准确的.

有没有人想过如何实现这个算法?

谢谢!

Sve*_*lov 15

DateTimeAddMonths,AddDays而且AddYears方法.使用它们减去减去