Ошибка DateTime Вычитание от 0 часов
Используя C# DateTime, я хотел бы вычесть время после 0 (или полуночи). Тем не менее, я получаю ошибку при этом. Я пытаюсь создать временную шкалу, где вы можете увеличивать и уменьшать масштаб и прокручивать время. Я получаю следующую ошибку: "Добавленное или вычтенное значение приводит к непредставляемому DateTime".
Я думаю, DateTime не знает, как обернуть от 0 до 23? Как мне обойти это?
3 ответа
Если вычесть 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]
Я предполагаю, что вы используете дату, которая начинается в 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 с более богатой системой типов, чем просто DateTime
,
Вычитание 5 минут из TimeSpan, установленного на полночь, дает -00:05. В результате получается интервал времени 23:55, а не -00:05.
DateTime.Today.Subtract(TimeSpan.FromMinutes(5)).TimeOfDay;