将分钟添加到日期不会更改C#NET的日期

将分钟添加到日期不会更改C#NET的日期,c#,datetime,C#,Datetime,双总分钟=300.0 两倍总分钟数相加=1378.0 double TotalMinute=300.0 double TotalMinutesAdded=1378.0 foreach(DataRow dr in ds.Tables[0].Rows) { //Add The above Timings to each Row's 2nd Column DateTime correc

双总分钟=300.0 两倍总分钟数相加=1378.0


double TotalMinute=300.0
double TotalMinutesAdded=1378.0

foreach(DataRow dr in ds.Tables[0].Rows)
                {

                    //Add The above Timings to each Row's 2nd Column
                    DateTime correctDate=Convert.ToDateTime(dr[2]);

                    correctDate.AddMinutes(TotalMinute);
                    correctDate.AddMinutes(TotalMinutesAdded);

                    dr[2]=correctDate;

                }

DateTiem Add*函数不应更改当前的DateTime值。它们返回新值

如果要更改值,请键入以下内容:

correctDate = correctDate.AddMinutes(TotalMinute);

必须将correctDate变量设置为AddMinutes调用返回的实例:

correctDate = correctDate.AddMinutes(TotalMinute);

AddMinutes()不会更改原始日期时间的值。它返回一个新的DateTime,其中包含必须分配给变量的新值。

DateTime是不可变的;像AddMinutes这样的函数返回一个newDateTime;因此,您需要捕获返回的值:

DateTime foo = ...
DateTime bar = foo.AddMinutes(5);

DateTime是一种不可变类型,很像String。您可以像编写str=str.Replace(“hello”)一样编写date=date.AddDays(1)。

问题在于

correctDate.AddMinutes(TotalMinute); 
correctDate.AddMinutes(TotalMinutesAdded);
应该是

correctDate = correctDate.AddMinutes(TotalMinute); 
correctDate = correctDate.AddMinutes(TotalMinutesAdded);

AddMinutes方法返回结果,而不是如前所述将分钟添加到correctDate,因为
DateTime
对象是不可变的,所以您必须重新分配变量

但是,需要注意的是,可以按如下方式链接操作:

correctDate = correctDate.AddMinutes(TotalMinute)
                         .AddMinutes(TotalMinutesAdded);

…并将当前时间的5分钟添加到datetime变量中:

dim dateFive_Minute_Time as datetime

dateFive_Minute_Time = Now.AddMinutes(5)

鉴于
correctDate
是一个
DateTime
,我不确定
.Value
在做什么-但你的观点已经足够清楚了-如果DateTime中唯一的实例成员被标记为readonly,那么pIt将非常好,因为它实际上是不可变的。MSDN库需要为每个MSDN方法条目提供一个示例,这样人们就可以立即获得它。