C# 基于当前日期计算日期

C# 基于当前日期计算日期,c#,datetime,date-format,C#,Datetime,Date Format,有谁能帮我用C#根据当前日期计算过去六个月、一年、两年的日期吗。例如,假设我的当前日期是09-11-2012,我需要找出日期09-05-2012、09-05-2010、09-05-2009等。我知道这是一个数学技巧,但我正在寻找与C类似的实现 使用 DateTime value = new DateTime(2012, 11, 09); DateTime nYearsAgo = value.AddYears(-n); 只需使用内置的日期和日历库 快速的方法是使用DateTime类,但是如果你

有谁能帮我用C#根据当前日期计算过去六个月、一年、两年的日期吗。例如,假设我的当前日期是
09-11-2012
,我需要找出日期
09-05-2012、09-05-2010、09-05-2009
等。我知道这是一个数学技巧,但我正在寻找与C类似的实现

使用

DateTime value = new DateTime(2012, 11, 09);
DateTime nYearsAgo = value.AddYears(-n); 

只需使用内置的日期和日历库

快速的方法是使用
DateTime
类,但是如果你想正确地做事情,那么你应该使用
Calendar
类,它可以让你更好地控制特定于文化的信息(因为周一在中国是一周的第一天,但在法国不是)

无论如何:

DateTime currentDate  = new DateTime( 2012, 11, 09 ); // assuming 9th November 2012
DateTime sixMonthsAgo = currentDate.AddMonths( -6 );
DateTime yearAgo      = currentDate.AddYears( -1 );
DateTime twoYearsAgo  = currentDate.AddYears( -2 );

顺便说一句,请不要用“dd-mm-yyyy”格式写日期(既不要用斜线也不要用破折号),因为它不明确——这个网站有大量的美国观众,出于某种原因,merkins使用“mm/dd/yyyy”,这对我来说毫无意义。理想的格式是“yyyy-MMM-dd”(其中“MMM”是三个字母的月份名称,例如“Jan”、“Feb”、“Mar”等),或者至少是“yyy-mm-dd”格式,更符合ISO 8601)。

您可以查看,更具体地说是and。

诀窍是使用
.AddMonths()
.AddYears()
方法,并提供一个负值来实现减法。

date.AddYears(-1):你可以自己搜索。参考:(你比我先发布了相同的答案…)