无法表示的DateTime
我有方法,需要两个日期时间参数
public void SomeReport(DateTime TimeFrom, DateTime TimeTo) { // ommited TimeFrom.ToString("ddMMyy"), TimeTo.ToString("ddMMyy"))); // ommited }
当我发送这个参数时
DateTime TimeTo = DateTime.Now; DateTime TimeFrom = new DateTime().AddHours(-1);
发生此错误:
System.ArgumentOutOfRangeException:添加或减去的值导致无法表示的DateTime。
可能是什么问题?
new DateTime()
是01/01/0001 00:00:00
,也是DateTime.MinValue
。
你将减去一小时。
猜测你试图从TimeTo
值中减去一小时:
var TimeFrom = TimeTo.AddHours(-1);
new DateTime()
返回最小可表示的DateTime
; 添加-1
小时会导致无法表示的DateTime
。
你可能想要DateTime TimeFrom = TimeTo.AddHours(-1);
尝试:
DateTime TimeTo = DateTime.Now; DateTime TimeFrom = TimeTo.AddHours(-1);
使用new DateTime()
创建一个DateTime
会给你一个带有DateTime.MinValue
……从这里你实际上不能减去任何东西……否则你会得到你得到的exception…参见MSDN
查看日期或时间数据。日期或时间没有足够的数字示例日期必须是8位数字20140604和时间6位数字,如180203年。因此,您正在查找错误。 我也得到这个错误,找到时间18000并将此更改为180000问题解决了。
在您的情况下, TimeFrom
保存无法添加-1的日期时间。 你可以调用
DateTime TimeFrom = TimeTo .AddHours(-1);
要么
DateTime TimeFrom = new DateTime().now.AddHours(-1);
它们都产生相同的结果。
在我的错误中,我将时间用作24:00而不是00:00