C# 将日期添加到日期时间

C# 将日期添加到日期时间,c#,datetime,C#,Datetime,我有一个dateTime变量,如果date不是月的最后一天,而是最后一天之前的一天,我想添加一天 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

我有一个dateTime变量,如果date不是月的最后一天,而是最后一天之前的一天,我想添加一天

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

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,得到当月最后一天的前一天。如果该日期等于当月的当前日期,则增量为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,得到当月最后一天的前一天。如果该日期等于当月的当前日期,则增加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);

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

它返回一个结果,您必须将该结果指定为DateTime是一个结构,并且是不可变的<代码>结束日期=结束日期.AddDays(1)如果您签出,您将看到该方法返回一个DateTime实例。在enddate Back中缺少指定更新日期谢谢,我的错误。我在文档中遗漏了这一点。我主要使用其他语言,类似的函数在同一个变量上运行,我自动想到了这一点。它返回一个结果,您必须将其指定为DateTime,它是一个结构,并且是不可变的<代码>结束日期=结束日期.AddDays(1)如果您签出,您将看到该方法返回一个DateTime实例。在enddate Back中缺少指定更新日期谢谢,我的错误。我在文档中遗漏了这一点。我主要与其他语言合作,类似的函数在同一个变量上运行,我自动想到了这一点。我可能想重新考虑一下。并非所有月份都有31天。可能需要重新考虑这一点。并非所有月份都有31天。