我有这个简单的代码:
DateTime endFinal = new DateTime(
end.Year,
end.Month,
end.Day,
Convert.ToInt32(hb.EndHours),
Convert.ToInt32(hb.EndMinutes),
0);
如果我输入的小时大于 12
,则会抛出无效的日期时间错误。
System.ArgumentOutOfRangeException:"小时、分钟和秒参数描述不可表示的日期时间。
我该怎么做才能避免它?我想输入大于 12
的数字。
我怎样才能克服这种行为?
我正在 Web 表单 Web 应用程序中使用该功能。
您正在寻找AddHours
(并且可能AddMinutes
(:
DateTime endFinal = new DateTime(
end.Year,
end.Month,
end.Day,
0,
0,
0)
.AddHours(Convert.ToInt32(hb.EndHours))
.AddMinutes(Convert.ToInt32(hb.EndMinutes));
现在hb.EndHours
可以是任何整数值(大于24
或小于0
(,
编辑:测试(见下面的评论(:
DateTime endFinal = new DateTime(
2017,
4,
17,
0,
0,
0)
.AddHours(13)
.AddMinutes(50);
Console.Write(endFinal.ToString("dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture));
结果:
17-04-2017 13:50:00
DateTime
不接受超过 24
小时,因为 - 好吧 - 一天只有 24 小时。
您可以使用TimeSpan
来实现您想要的:
DateTime endFinal = new DateTime(end.Year, end.Month, end.Day)
.Add(new TimeSpan(Convert.ToInt32(hb.EndHours), Convert.ToInt32(hb.EndMinutes), 0));