添加day to dateTime

时间:2016-08-30 15:10:54

标签: c# datetime

我有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函数不起作用一样。 谁知道为什么?

3 个答案:

答案 0 :(得分:6)

AddDays不会更改日期,但会返回添加了天数的新日期。因此,要更改endDate,必须将函数的输出分配给它:

var endDate = new DateTime(2016, 8, 30);
endDate = endDate.AddDays(1);

答案 1 :(得分:0)

它返回一个结果,你必须指定为DateTime是一个结构并且是不可变的。此外,如果您签出the documentation,您将看到该方法返回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以获得该月最后一天的前一天。如果这等于您的日期当月的当天,则增加1。

答案 2 :(得分:0)

并非所有月份都有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);