C# DateTime不允许小时值大于12
我有一个简单的代码:C# DateTime不允许小时值大于12,c#,C#,我有一个简单的代码: DateTime endFinal = new DateTime( end.Year, end.Month, end.Day, Convert.ToInt32(hb.EndHours), Convert.ToInt32(hb.EndMinutes), 0); 如果输入的小时数大于12,则会抛出无效的datetime错误 System.ArgumentOutOfRangeException:“小时、分钟和秒参数描述不可表示的日期时间。” 我
DateTime endFinal = new DateTime(
end.Year,
end.Month,
end.Day,
Convert.ToInt32(hb.EndHours),
Convert.ToInt32(hb.EndMinutes),
0);
如果输入的小时数大于12,则会抛出无效的datetime错误
System.ArgumentOutOfRangeException:“小时、分钟和秒参数描述不可表示的日期时间。”
我能做些什么来避免它?我想输入大于12的数字
我怎样才能克服这种行为
我正在web表单web应用程序中使用该功能。您正在查找AddHours,可能还有AddMinutes:
现在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小时。
您可以使用时间跨度来实现您想要的:
DateTime endFinal = new DateTime(end.Year, end.Month, end.Day)
.Add(new TimeSpan(Convert.ToInt32(hb.EndHours), Convert.ToInt32(hb.EndMinutes), 0));
使用调试器并查找hb变量中存储的值。那么您的问题是大于12或24的数字?你提到了这两个…超过12个。有时候我把事情搞得太复杂了,很好:增加时间不管用。如果我加上13小时。。我在小时字段中得到一个值0。我修正了我的答案。@dan mann:请检查输出/表示。我增加了13小时的测试,这可能是我的电脑设置方式的错误吗?@dan mann:请你提供代码摘要好吗?如何表示/打印最终结果?这是一个有趣的解决方案,我现在将测试它。顺便说一句,它不接受大于12的数字。我最喜欢你的解决方案。
DateTime endFinal = new DateTime(end.Year, end.Month, end.Day)
.Add(new TimeSpan(Convert.ToInt32(hb.EndHours), Convert.ToInt32(hb.EndMinutes), 0));