DateTime错误从0小时减去

时间:2012-04-11 20:33:04

标签: c# datetime time subtraction

使用C#DateTime,我想减去0(或午夜)的时间。但是,这样做时我收到错误。我正在尝试创建一个时间轴,您可以放大和缩小时间。我收到以下错误:“添加或减去的值导致无法表示的DateTime。”

我猜DateTime不知道如何从0回到23?我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

如果从TimeSpan中减去DateTime,它将在午夜过后“回绕”:

> var d1 = DateTime.Parse("4/11/2012 12:30:00 AM");
> var d2 = d1.Subtract(new TimeSpan(1, 15, 0));
> 
> d2
[4/10/2012 11:15:00 PM]

答案 1 :(得分:2)

我的猜测是你正在使用从DateTime.MinValue开始的日期。如果你将时间减去DateTime.MinValue之前的时间,你就会得到那个例外。

// This is equal to DateTime.MinValue - maybe you're doing this?
DateTime date = new DateTime();
// Bang
date = date.AddHours(-1);

如果确实想要“只是一次”表示,请考虑使用Noda Time,我的Joda Time伪端口,其类型系统比{{{}更丰富1}}。

答案 2 :(得分:0)

从设置为午夜的时间跨度中减去 5 分钟,结果为 -00:05。这导致时间跨度为 23:55 而不是 -00:05。

DateTime.Today.Subtract(TimeSpan.FromMinutes(5)).TimeOfDay;