使用C#DateTime,我想减去0(或午夜)的时间。但是,这样做时我收到错误。我正在尝试创建一个时间轴,您可以放大和缩小时间。我收到以下错误:“添加或减去的值导致无法表示的DateTime。”
我猜DateTime不知道如何从0回到23?我该如何解决这个问题?
答案 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;