3 回答
TA贡献1816条经验 获得超4个赞
你似乎在以艰难的方式做事:
textBoxData.Text = (new DateTime(year, month, day).AddMonths(6).AddDays(2)).ToShortDateString();
应该做的伎俩。
让对象为您计算日期。
TA贡献1807条经验 获得超9个赞
您的最终日期无效,您正在创建一个日期,月份 = 6(6 月),日期 = 31。但是 6 月没有第 31 天。我添加了一行代码
if (diaLimpeza > 30)
diaLimpeza--;
else if (mesLimpeza == 04 || mesLimpeza == 06 || mesLimpeza == 09 || mesLimpeza == 11)
减去一天后。
TA贡献1805条经验 获得超9个赞
使用此代码,当用户在组合框中选择 6 个月时,我会计算开始日期、清理日期和通知日期。我也看看这一年是否是闰年。小心02月的考试。如果不是闰年并且你用第 29 天进行测试,你会得到一个错误,因为第 29 天在二月不存在,而当年是闰年。
int day = (int)DateTime.Now.Day;
int month = (int)DateTime.Now.Month;
int year = (int)DateTime.Now.Year;
int diaLimpeza, mesLimpeza, anoLimpeza,diaNotifica, mesNotifica, anoNotifica;
public void mes6()
{
DateTime dataInicial = new DateTime();
DateTime dataLimpeza = new DateTime();
DateTime dataNotifica = new DateTime();
day = 28;
month = 02;
year = 2018;
mesLimpeza= month + 6;
if (mesLimpeza > 12)
{
mesLimpeza = mesLimpeza - 12;
anoLimpeza = year + 1;
diaLimpeza = day;
}
else
{
mesLimpeza = month + 6;
anoLimpeza = year;
diaLimpeza = day;
}
if (mesLimpeza == 01 || mesLimpeza == 03 || mesLimpeza == 05 || mesLimpeza == 07 || mesLimpeza == 08 || mesLimpeza == 10 || mesLimpeza == 12) //mesLimpeza == 12 excepçao
{
if (diaLimpeza == 30 || diaLimpeza == 31)
{
diaNotifica = (diaLimpeza + 2) - 31;
mesNotifica = mesLimpeza + 1;
anoNotifica = anoLimpeza;
}
else if ((diaLimpeza == 30 || diaLimpeza == 31) && mesLimpeza == 12)
{
diaNotifica = (diaLimpeza + 2)-31;
mesNotifica = mesLimpeza + 1;
anoNotifica = anoLimpeza + 1;
}
else
{
diaNotifica = diaLimpeza + 2;
mesNotifica = mesLimpeza;
anoNotifica = anoLimpeza;
}
}
else if (mesLimpeza == 04 || mesLimpeza == 06 || mesLimpeza == 09 || mesLimpeza == 11)
{
if (diaLimpeza > 30)
{
diaLimpeza = 30;
}
if (diaLimpeza == 29 || diaLimpeza == 30)
{
diaNotifica = (diaLimpeza + 2) - 30; //mudei esta linha
mesNotifica = mesLimpeza + 1;
anoNotifica = anoLimpeza;
}
else
{
diaNotifica = diaLimpeza + 2;
mesNotifica = mesLimpeza;
anoNotifica = anoLimpeza;
}
}
else if (mesLimpeza == 02)
{
if (anoLimpeza % 4 == 0)
{
if (diaLimpeza == 30 || diaLimpeza == 31)
{
diaLimpeza = 29;
if (diaLimpeza == 28 || diaLimpeza == 29)
{
diaNotifica = (diaLimpeza + 2) - 29;
mesNotifica = mesLimpeza + 1;
anoNotifica = anoLimpeza;
}
}
}
else
{
if (diaLimpeza >= 28 && diaLimpeza <= 31)
{
diaLimpeza = 28;
if (diaLimpeza == 27 || diaLimpeza == 28)
{
diaNotifica = (diaLimpeza + 2) - 28;
mesNotifica = mesLimpeza + 1;
anoNotifica = anoLimpeza;
}
}
else
{
diaNotifica = diaLimpeza + 2;
mesNotifica = mesLimpeza;
anoNotifica = anoLimpeza;
}
}
}
dataInicial = new DateTime(year, month, day);
dataLimpeza = new DateTime(anoLimpeza,mesLimpeza, diaLimpeza);
dataNotifica = new DateTime(anoNotifica, mesNotifica, diaNotifica);
textBoxData.Text = dataInicial.ToShortDateString() + "\r\n" + dataLimpeza.ToShortDateString() + "\r\n" + dataNotifica.ToShortDateString();
}
private void guardaStock_Click(object sender, EventArgs e)
{
if (comboLimpeza.Text == "6 Meses")
{
mes6();
}
}
- 3 回答
- 0 关注
- 107 浏览
添加回答
举报