我有这个简单的代码:
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应用程序中使用该功能。
答案 0 :(得分:4)
您正在寻找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
答案 1 :(得分:0)
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));