c# - 我正在尝试将值传递给 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#。
解决方案
您似乎正在以艰难的方式做事:
textBoxData.Text = (new DateTime(year, month, day).AddMonths(6).AddDays(2)).ToShortDateString();
应该做的伎俩。
让对象为您计算日期。
推荐阅读
- c# - 将填充了位和字节的 ushort[] 反序列化为自定义对象
- reactjs - React Native Drawer Navigator,如何添加图标和图像?
- c++ - “条件跳转或移动取决于未初始化的值”使用 ucontext_t
- pandas - 在 Dask 中使用 pandas cut 功能
- oauth-2.0 - Amplify/Cognito oauth 联合登录(Google),不显示弹出窗口,而是在同一页面中重定向
- firebase - React-native-Firebase:“auth/network-request-failed”
- angular - 在 Angular 中向 ckeditor 添加简单的上传适配器
- java - 空白颜色主题中的 VSCode Java 扩展颜色突出显示
- django - 如何在我的 Django 应用程序中实现 adminLTE 仪表板?
- amazon-web-services - AWS 账单和成本管理与 AWS 成本浏览器有什么区别?