C# 如何正确地将天、小时和分钟添加到现有日期
我试图将天、小时和分钟添加到现有的datetime中,但使用.addDays、.addHours和.addMinutes方法,datetime变量保持不变。我知道当我使用.addDays方法时,我必须为返回值分配一个新变量,即使这样也不会更改datetime变量C# 如何正确地将天、小时和分钟添加到现有日期,c#,C#,我试图将天、小时和分钟添加到现有的datetime中,但使用.addDays、.addHours和.addMinutes方法,datetime变量保持不变。我知道当我使用.addDays方法时,我必须为返回值分配一个新变量,即使这样也不会更改datetime变量 int serviceday = 0; int servicehour = 0; int serviceminute = 0;
int serviceday = 0;
int servicehour = 0;
int serviceminute = 0;
if (ServiceDay == null || ServiceDay == "")
{
serviceday = 0;
}
else
Convert.ToInt32(ServiceDay);
if (ServiceHour == null || ServiceHour == "")
{
servicehour = 0;
}
else
Convert.ToInt32(ServiceHour);
if (ServiceMinute == null || ServiceMinute == "")
{
serviceminute = 0;
}
else
Convert.ToInt32(serviceminute);
看起来您想要添加任意数量的天、小时和分钟,但这是一个漫长的过程。您可以一次完成这一切:
DateTime servicedatetime = new DateTime();
servicedatetime = serviceEntry.ServiceDateTime;
DateTime newdatetimeDays = new DateTime();
DateTime newdatetimeHours = new DateTime();
DateTime newdatetimeMinutes = new DateTime();
newdatetimeDays = servicedatetime.AddDays(serviceday);
newdatetimeHours = newdatetimeDays.AddHours(servicehour);
newdatetimeMinutes = newdatetimeHours.AddMinutes(serviceminute);
您需要分配Convert.ToInt32调用的结果,否则不会设置变量,例如:
DateTime finalDateTime = serviceEntry.ServiceDateTime
.AddDays(serviceday)
.AddHours(servicehour)
.AddMinutes(serviceminute);
您可以编写更紧凑的代码
serviceDay = Convert.ToInt32(ServiceDay)
注意:此答案大部分来自应获得积分的DavidG one,只是为了修复嘈杂的ifs块,以发现您是否具有有效值这行代码没有任何作用:Convert.toint32servicemin;在我看来,一切都是零。您的操作正确,您确定返回的是newdatetimeMinutes而不是servicedatetime吗?此外,您不必为每次添加都实例化一个新的DateTime,您只需在AddDays、AddHours和Addminutes中始终使用newDateTimeDays即可。最后,你确定你实际上是在添加值,而不是0吗?@NicholasEllingson我意识到我的错误,我实际上不是在添加值,只是0。谢谢你。@LarsTech你是对的,我在发布问题后注意到了。对不起,各位,我犯了一个错误:servicedatetime。添加新的时间跨度serviceDay、serviceHour、serviceMinute、seconds:0;
int serviceday;
int servicehour;
int serviceminute;
Int32.TryParse(ServiceDay, out serviceday);
Int32.TryParse(ServiceHour, out servicehour);
Int32.TryParse(ServiceMinute, out serviceminute);
DateTime finalDateTime = serviceEntry.ServiceDateTime
.AddDays(serviceday)
.AddHours(servicehour)
.AddMinutes(serviceminute);