我正在使用C#编写一个算法,根据输入的字符串计算过去的日期时间,具体要求如下:
字符串包含一个整数,后面跟着'D'、'M'或'Y'中的一个,例如"1D"或"90M"。
输出结果是当前日期时间减去相应数量的天数、月数或年数。
问题在于,如果我在正则表达式中切换输入字符串(D、M或Y),并从DateTime.Now中减去相应的TimeSpan,则新的TimeSpan()构造函数只接受天数,而不是月份或年份。
字符串包含一个整数,后面跟着'D'、'M'或'Y'中的一个,例如"1D"或"90M"。
输出结果是当前日期时间减去相应数量的天数、月数或年数。
问题在于,如果我在正则表达式中切换输入字符串(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天,那将会非常不准确。
有没有人对如何实现这个算法有想法呢?
谢谢!