22

我有需要两个日期时间参数的方法

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。

可能是什么问题?

4

7 回答 7

42

new DateTime()01/01/0001 00:00:00哪个也是DateTime.MinValue

你从那减去一小时。

猜测您正试图从TimeTo值中减去一个小时:

var TimeFrom = TimeTo.AddHours(-1);
于 2012-12-04T10:03:33.130 回答
14

new DateTime()返回可表示的最小值DateTime;添加-1小时数会导致DateTime无法表示。

你可能想要DateTime TimeFrom = TimeTo.AddHours(-1);

于 2012-12-04T10:02:24.827 回答
5

尝试:

DateTime TimeTo = DateTime.Now;
DateTime TimeFrom = TimeTo.AddHours(-1);
于 2012-12-04T10:02:36.857 回答
1

看看你的日期或时间数据。日期或时间没有足够的数字 示例日期必须是 8 位数字 20140604 和时间 6 位数字,例如 180203。因此,你会出错。我也收到此错误并找到时间 18000 并将其更改为 180000 问题已解决。

于 2014-10-09T10:38:34.163 回答
1

创建一个DateTimewithnew DateTime()给你一个DateTimewith DateTime.MinValue...你实际上不能减去任何东西......否则你会得到你得到的异常......见MSDN

于 2012-12-04T10:03:44.160 回答
0

在您的情况下TimeFrom,保存无法添加 -1 的日期时间。您可以调用

DateTime TimeFrom = TimeTo .AddHours(-1);

或者

DateTime TimeFrom = new DateTime().now.AddHours(-1);

它们都产生相同的结果。

于 2012-12-04T10:14:52.883 回答
0

在我的错误中,我将时间用作 24:00 而不是 00:00

于 2018-05-20T12:55:03.383 回答