向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函数不起作用。有人知道为什么吗?

向dateTime添加日期

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