向dateTime添加日期
本文关键字:日期 添加 dateTime | 更新日期: 2023-09-27 18:04:57
我有一个dateTime变量,如果日期不是一个月的最后一天,而是最后一天的前一天,我想添加一天。
endDate = newDate(2016, 8, 30);//create date for test
if (DateTime.DaysInMonth(endDate.Year, endDate.Month) == (int)31 && endDate.Day == (int)30)
endDate.AddDays(1);
从调试器,我可以看到执行上的endDate.AddDays(1);
,但endDate
仍然是相同的(30.08.2016
),如果AddDays
函数不起作用。有人知道为什么吗?
AddDays
不会更改日期,而是返回一个包含添加日期的新日期。因此,要更改endDate
,您必须将函数的输出分配给它:
var endDate = new DateTime(2016, 8, 30);
endDate = endDate.AddDays(1);
它返回一个你必须分配的结果,因为DateTime是一个不可变的结构体。此外,如果您查看了文档,您将看到该方法返回一个DateTime实例。
endDate = endDate.AddDays(1);
关于你的逻辑,如果它是一个月最后一天的前一天,你想增加1个日期。你现在所拥有的是错误的,可以这样写:
// only increment if one day before last day of month
if ((DateTime.DaysInMonth(endDate.Year, endDate.Month) - 1) == endDate.Day)
endDate = endDate.AddDays(1); // assign the returned value
取最后一天的结果并减去1,得到该月最后一天的前一天。
不是每个月都有31天。
下面是更新后的代码:
var endDate = new DateTime(2017, 2, 27);//create date for test
var daysInMonth = DateTime.DaysInMonth(endDate.Year, endDate.Month);
if(endDate.Day == daysInMonth - 1)
endDate = endDate.AddDays(1);