22

我有这个简单的程序:

        DateTime aux = new DateTime(2012, 6, 12, 12, 24, 0);
        DateTime aux2 = new DateTime(2012, 6, 12, 13, 24, 0);
        aux2.AddDays(1);

       Console.WriteLine((aux2 - aux).TotalHours.ToString());

        Console.ReadLine();

我对此进行了调试,发现aux2.AddDays(1);似乎不起作用,我在这里缺少什么?它应该返回 25,但答案是 1。

问题是什么?

AddHours不起作用,我想其他人也不起作用。

4

3 回答 3

64

它确实有效,但您不对返回值做任何事情,请尝试

aux2 = aux2.AddDays(1);

DateTimes 与 s 共享不变性这一方面String


编辑

MSDN上有一段关于它的小段

此方法不会更改此 DateTime 的值。相反,它返回一个新的 DateTime,其值是此操作的结果。

于 2012-07-20T16:43:21.693 回答
5

DateTime.AddDays返回添加指定天数的新 DateTime。您需要将其分配给您的变量:

aux2 = aux2.AddDays(1);
于 2012-07-20T16:43:31.587 回答
0

您正在使用不可变函数。

DateTime 函数是不可变的,一旦你设置变量等于它,它就不能改变,你可以设置新的变量等于函数的工作。AddDay 函数接受您放入其中的变量,但它不会更改保持不变的原始变量。所以你需要设置一个新变量等于原始变量+一天。

所以你真正需要做的就是改变

aux2.AddDays(1);

aux2 = aux2.Adddays(1);

然后其余的比较功能应该可以工作

于 2018-10-09T11:01:20.277 回答