为了账号安全,请及时绑定邮箱和手机立即绑定

我正在尝试将值传递给 dateTime 对象,但是当月份小于 month10 时出现问题

我正在尝试将值传递给 dateTime 对象,但是当月份小于 month10 时出现问题

C#
翻过高山走不出你 2022-12-04 13:17:07
我正在尝试将日期、月份和年份传递给数据时间对象,但是当值小于第 10 个月时要打印的月份有问题。在我的代码中,我有一个初始日期和算术,我计算了清洁月和通知月。如果该月的最后一天是 30 或 31 以及第 2 个月的特定情况,我也会做必须发生的事情。这是我的代码:    int day = (int)DateTime.Now.Day;    int month = (int)DateTime.Now.Month;    int year = (int)DateTime.Now.Year;    int diaLimpeza, mesLimpeza, anoLimpeza;    int diaNotifica, mesNotifica, anoNotifica;  public void mes6()    {        DateTime dataInicial = new DateTime();        DateTime dataLimpeza = new DateTime();        DateTime dataNotifica = new DateTime();        day = 31;        month = 12;        year = 2019;        mesLimpeza=  month + 6;        if (mesLimpeza > 12)        {            mesLimpeza = mesLimpeza - 12;            anoLimpeza = year + 1;            diaLimpeza = day;        }        else        {            mesLimpeza = month + 6;            anoLimpeza = year;            diaLimpeza = day;        }        int soma = diaLimpeza + 2;        diaNotifica = soma;        if (mesLimpeza == 01 || mesLimpeza == 03 || mesLimpeza == 05 || mesLimpeza == 07 || mesLimpeza == 08 || mesLimpeza == 10) //mesLimpeza == 12 excepçao        {            if (diaLimpeza == 30 || diaLimpeza == 31)            {                diaNotifica = diaNotifica - 31;                mesNotifica = mesLimpeza + 1;                anoNotifica = anoLimpeza;                //int a = diaNotifica;            }            else if ((diaLimpeza == 30 || diaLimpeza == 31) && mesLimpeza == 12)            {                diaNotifica = diaNotifica - 31;                mesNotifica = (mesLimpeza + 1) - 12;                anoNotifica = anoLimpeza + 1;            }            else            {                diaNotifica = diaLimpeza + 2;                mesNotifica = mesLimpeza;                anoNotifica = anoLimpeza;            }        }在最后一行,我试图在文本框中显示日期格式,如 (yyyy-MM-dd)。我模拟了一个初始日、月和年,当月的结果等于或大于 10 时,一切都很好。当值较小时,图像上出现此错误:我的错误我注意到月份格式不接受小于 10 且没有零的数字,例如月份“6”,我必须输入“06”以使其格式正确。我怎么解决这个问题?我在 visual studio 中使用 C#。
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

你似乎在以艰难的方式做事:

textBoxData.Text = (new DateTime(year, month, day).AddMonths(6).AddDays(2)).ToShortDateString();

应该做的伎俩。

让对象为您计算日期。


查看完整回答
反对 回复 2022-12-04
?
函数式编程

TA贡献1807条经验 获得超9个赞

您的最终日期无效,您正在创建一个日期,月份 = 6(6 月),日期 = 31。但是 6 月没有第 31 天。我添加了一行代码

if (diaLimpeza > 30) diaLimpeza--;

else if (mesLimpeza == 04 || mesLimpeza == 06 || mesLimpeza == 09 || mesLimpeza == 11)减去一天后。

//img1.sycdn.imooc.com//638c2d980001e7b906550655.jpg

查看完整回答
反对 回复 2022-12-04
?
Cats萌萌

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();

        }

    }



查看完整回答
反对 回复 2022-12-04
  • 3 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信