Давайте начнем с того, что будем называть ваши переменные чем-то, что помогает нам рассуждать о коде.
// this is the time you are going to time out
DateTime actual = Convert.ToDateTime("12:00 AM");
// this is your scheduled out
DateTime scheduled = Convert.ToDateTime("11:00 PM");
TimeSpan overtime = scheduled.Subtract(actual);
Мы обнаружили, что для начала вы выполняете неправильный расчет. Это будет правильный расчет:
TimeSpan overtime = actual.Subtract(scheduled);
Когда мы делаем это, мы получаем -23 hours
. Это потому, что ваше actual
время не соответствует вашему scheduled
времени. Для этого вам нужно добавить день.
Попробуйте это:
// this is the time you are going to time out
DateTime actual = Convert.ToDateTime("12:00 AM").AddDays(1);
// this is your scheduled out
DateTime scheduled = Convert.ToDateTime("11:00 PM");
TimeSpan overtime = actual.Subtract(scheduled);
Тогда вы получите желаемый результат - т.е. 1 hour
.