我正在研究 C# 中的一种算法,以根据具有以下特征的输入字符串计算过去的 DateTime:
该字符串包含一个整数,后跟“D”、“M”或“Y”,例如“1D”或“90M”。
输出将为 DateTime.Now 减去相应的天数、月数或年数。
我遇到的问题是,例如,如果我在正则表达式(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);
}
如果输入字符串以天为单位,则此逻辑很好,但 TimeSpan 的构造函数不接受月或年,如果我假设每个月有 30 天,或者每年有 365 天,那将是非常不准确的。
有人对如何实现这个算法有想法吗?
谢谢!