C# DateTime.AddDays()未按预期工作
我有一个简单的程序:C# DateTime.AddDays()未按预期工作,c#,visual-studio-2010,datetime,C#,Visual Studio 2010,Datetime,我有一个简单的程序: 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();
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
不起作用,我想其他人也不起作用。它起作用,但您不使用返回值,请尝试
aux2 = aux2.AddDays(1);
DateTime
s与String
s共享这方面的不变性
编辑
上面有一小段关于它的内容
此方法不会更改此DateTime的值。相反,它
返回一个新的日期时间,其值是此操作的结果
DateTime.AddDays
返回添加指定天数的新日期时间。您需要将其分配给变量:
aux2 = aux2.AddDays(1);
您正在使用不可变函数。
DateTime函数是不可变的,一旦您将变量设置为它,它就不能更改,您可以将新变量设置为函数的工作状态。AddDay函数接受您输入的变量,但它不会更改保持不变的原始变量。因此,您需要将新变量设置为等于原始变量+一天
所以你真正需要做的就是改变
aux2.AddDays(1)代码>
到
aux2=aux2.Adddays(1)代码>
然后剩下的比较函数应该可以工作DateTime
实例是不可变的。您必须将.AddDays
的结果分配给另一个实例(或自身)。说真的:|,我说不出话来,我认为aux2会自动更改,这是一个错误。是的,“返回新的日期时间字符串…”,鼠标上的工具提示over@SasGabriel,请注意.NET VS中的工具提示/文档会告诉您“不必要的分配”“这样做的时候。显然这是非常必要的,应该有人告诉Microsoft。@Lucas925您正在使用该变量吗?