首页 > 解决方案 > 我正在尝试将值传递给 dateTime 对象,但是当月小于 month10 时出现问题

问题描述

我正在尝试将日期、月份和年份传递给 datatime 对象,但是当值小于第 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;
            }
        }
        else if (mesLimpeza == 04 || mesLimpeza == 06 || mesLimpeza == 09 || mesLimpeza == 11)
        {
            if (diaLimpeza == 29 || diaLimpeza == 30)
            {
                diaNotifica = diaLimpeza - 30;
                mesNotifica = mesLimpeza + 1;
                anoNotifica = anoLimpeza;
            }
            else
            {
                diaNotifica = diaLimpeza + 2;
                mesNotifica = mesLimpeza;
                anoNotifica = anoLimpeza;
            }
        }
        else if (mesLimpeza == 02)
        {
            if (anoLimpeza % 4 == 0)
            {
                if (diaLimpeza == 28 || diaLimpeza == 29)
                {
                    diaNotifica = diaLimpeza - 29;
                    mesNotifica = mesLimpeza + 1;
                    anoNotifica = anoLimpeza;
                }
            }
            else
            {
                if (diaLimpeza == 27 || diaLimpeza == 28)
                {
                    diaNotifica = diaLimpeza - 28;
                    mesNotifica = mesLimpeza + 1;
                    anoNotifica = anoLimpeza;
                }
                else
                {
                    diaNotifica = diaLimpeza + 2;
                    mesNotifica = mesLimpeza;
                    anoNotifica = anoLimpeza;
                }
            }
        }

        dataLimpeza = new DateTime(anoLimpeza, mesLimpeza, diaLimpeza);

        textBoxData.Text = dataLimpeza.ToShortDateString();

    }

在最后一行,我试图在文本框中显示日期的格式,如 (yyyy-MM-dd)。

当月份的结果等于或大于 10 时,我已经模拟了一个初始的日期、月份和年份,一切都很好。

当该值较小时,我在图像上收到此错误:

我的错误

我注意到月份格式不接受小于 10 的数字而没有零,比如月份“6”,我必须输入“06”才能使其格式正确。

我怎么解决这个问题?

我在 Visual Studio 中使用 C#。

标签: c#

解决方案


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

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

应该做的伎俩。

让对象为您计算日期。


推荐阅读