无法表示的DateTime

时间:2012-12-04 10:00:23

标签: c# 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。

可能是什么问题?

7 个答案:

答案 0 :(得分:31)

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

你要减去一小时。

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

var TimeFrom = TimeTo.AddHours(-1);

答案 1 :(得分:13)

new DateTime()返回可表示的最小DateTime;将-1小时添加到此会导致无法表示的DateTime

您可能需要DateTime TimeFrom = TimeTo.AddHours(-1);

答案 2 :(得分:5)

尝试:

DateTime TimeTo = DateTime.Now;
DateTime TimeFrom = TimeTo.AddHours(-1);

答案 3 :(得分:1)

使用DateTime创建new DateTime()会为您提供DateTime DateTime.MinValue ...从此您实际上无法减去任何内容...否则您将获得例外你有......见MSDN

答案 4 :(得分:1)

查看日期或时间数据。日期或时间没有足够的数字示例日期必须是8位20140604和时间6位数,如此180203.因此,您正在犯错误。 我也得到这个错误并找到时间18000并将其更改为180000问题解决了。

答案 5 :(得分:0)

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

DateTime TimeFrom = TimeTo .AddHours(-1);

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

它们都产生相同的结果。

答案 6 :(得分:0)

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