无法表示的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