如何从1月份减去3个月才能获得正确的月份?

时间:2016-04-28 08:15:16

标签: c#

我想在我的网络应用程序中计算年份和月份。

在我的代码中,我有一年201604。我想减去3个月,所以它应该是201601.我得到了这部分工作,但现在如果我想再次从201601减去另外3个monyth,结果应该是201511。我不知道该怎么做这部分。帮助将不胜感激

代码

decimal str = "201604";
decimal year= (decimal) Calculations.ParseStringToDecimal(str.SubString(0,4), 0);
decimal month = (decimal) Calculations.ParseStringToDecimal(str.SubString(4,2), 0);

newMonth = month - 3; 

string newDate = year + month

//Result: 201601. 

//I want to subtract 201601 again, then the result should be 201511. 

4 个答案:

答案 0 :(得分:10)

使用日期时,请使用专门设计的<{1}}类

DateTime

答案 1 :(得分:4)

DateTime threemonthprevDate = DateTime.ParseExact(str,"yyyyMM",CultureInfo.InvariantCulture).AddMonths(-3);

DateTime sixmonthprevDate = threemonthprevDate.AddMonths(-3));

改为使用ParseExact方法。

答案 2 :(得分:3)

string str = "201604";
DateTime dateTime = new DateTime(int.Parse(str.Substring(0, 4)), int.Parse(str.Substring(4, 2)), 1);
dateTime = dateTime.AddMonths(-3);
string resultString = dateTime.ToString("yyyyMM");

答案 3 :(得分:1)

string str = "201604";
decimal year= (decimal) Calculations.ParseStringToDecimal(str.SubString(0,4), 0);
decimal month = (decimal) Calculations.ParseStringToDecimal(str.SubString(4,2), 0);
DateTime dateObj = new Date(year, month, 1);
dateObj.AddMonths(-3);
//201601
string newDate1 = dateObj.ToString("yyyyMM");
dateObj.AddMonths(-3);
//201511
string newDate1 = dateObj.ToString("yyyyMM");