为什么AddMonths()不能在我的DateTime上运行? (见代码)

时间:2009-10-02 16:18:57

标签: c# .net asp.net-mvc asp.net-mvc-3 datetime

控制器:

        DateTime startDate = DateTime.Now;

        ViewData["now"] = startDate.ToString();
        ViewData["interval"] = interval.ToString();

        startDate.AddMonths(interval);

        ViewData["later"] = startDate.ToString();

查看:

Now: <%=ViewData["now"] %><br />

Later: <%=ViewData["later"] %><br />

Interval: <%=ViewData["interval"] %>

这会产生:

Now: 10/2/2009 12:17:14 PM
Later: 10/2/2009 12:17:14 PM
Interval: 6

4 个答案:

答案 0 :(得分:17)

startDate  = startDate.AddMonths(interval);

答案 1 :(得分:5)

来自文档:

此方法不会更改此DateTime对象的值。而是返回一个新的DateTime对象,其值是此操作的结果。

你真的想要:

ViewData [“later”] = startDate.AddMonths(interval).ToString();

或类似的东西。

答案 2 :(得分:3)

AddMonths返回一个带有值的新DateTime。

startDate = startDate.AddMonths(interval)

答案 3 :(得分:3)

您需要将AddMonths的结果分配给变量。 AddMonths不会更改调用它的对象的值,而是返回一个新的DateTime,其值为操作产生的值,原始DateTime值保持不变。