C# 从0小时中减去日期时间错误

C# 从0小时中减去日期时间错误,c#,datetime,time,subtraction,C#,Datetime,Time,Subtraction,使用C#DateTime,我想减去0点后的时间(或午夜)。但是,这样做时会出现错误。我正在尝试创建一个时间轴,在这里你可以放大缩小并滚动时间。我得到以下错误:“加上或减去的值会导致无法表示的DateTime。” 我猜DateTime不知道如何从0回到23?我该如何解决这个问题?如果从日期时间中减去时间跨度,它将在午夜后“环绕”: > var d1 = DateTime.Parse("4/11/2012 12:30:00 AM"); > var d2 = d1.Subtract(new

使用C#DateTime,我想减去0点后的时间(或午夜)。但是,这样做时会出现错误。我正在尝试创建一个时间轴,在这里你可以放大缩小并滚动时间。我得到以下错误:“加上或减去的值会导致无法表示的DateTime。”


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

如果从
日期时间中减去
时间跨度
,它将在午夜后“环绕”:

> 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]

如果从
日期时间
中减去
时间跨度
,它将在午夜后“环绕”:

> 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]

我猜您使用的是从
DateTime.MinValue
开始的日期。如果减去时间,使其早于
DateTime.MinValue
,则会得到该异常

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

如果你真的想要一个“只是一个时间”的表示,考虑使用一个比较丰富的类型系统的我的伪端口,而不仅仅是代码> DATETIME/COD>。如果减去时间,使其早于

DateTime.MinValue
,则会得到该异常

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

如果你真的想要一个“只是一个时间”的表示,考虑使用一个比较丰富的类型系统的我的伪端口,而不仅仅是代码> DATETIME//> >。< /P>请发布你的代码,这样我们就可以看到你在做什么。欢迎来到StAdvOp溢出。仅供参考,没有足够信息的问题往往会被关闭或否决。只要有可能,请确保包含一个。它使其他人更容易帮助您解决问题。请发布您的代码,以便我们看到您正在做什么。欢迎使用stackoverflow。仅供参考,没有足够信息的问题往往会被关闭或否决。只要有可能,请确保包含一个。它使其他人更容易帮助您解决问题。除非如Jon Skeet在文章中所述,它小于

DateTime.MinValue
。正确,但在什么情况下,您希望表示小于
01/01/0001 00:00:00
?如果你需要
DateTime
,你很可能会遇到更大的设计问题。不知道。但是如果没有OP的更多信息,我们不知道尝试了什么。那么,您将如何表示10000BC?除了
日期时间
之外,还有一些其他数据结构,在极少数情况下,您需要将BC时间表示为毫秒(这是
日期时间
能够做到的)。:)你们都是对的。问题是,因为我只关心datetime的小时、分钟、秒部分,所以dt对象已初始化为MinValue。所以,当我试图减去那个日期的午夜之后,它抛出了一个错误。我将日期初始化为其他日期,效果很好。再次感谢!除非它小于Jon Skeet在中发布的
DateTime.MinValue
。正确,但在什么情况下,您希望表示小于
01/01/0001 00:00:00的日期/时间?如果你需要
DateTime
,你很可能会遇到更大的设计问题。不知道。但是如果没有OP的更多信息,我们不知道尝试了什么。那么,您将如何表示10000BC?除了
日期时间
之外,还有一些其他数据结构,在极少数情况下,您需要将BC时间表示为毫秒(这是
日期时间
能够做到的)。:)你们都是对的。问题是,因为我只关心datetime的小时、分钟、秒部分,所以dt对象已初始化为MinValue。所以,当我试图减去那个日期的午夜之后,它抛出了一个错误。我将日期初始化为其他日期,效果很好。再次感谢!