Как бороться с округлением TimeSpan?

Я беру разницу между двумя полями DateTime и сохраняю ее в переменной TimeSpan. Теперь я должен округлить TimeSpan по следующим правилам:

если минуты в TimeSpan меньше 30, то Minutes and Seconds должны быть установлены на ноль,
если минуты в TimeSpan равны или превышают 30, то часы должны быть увеличены на 1, а минуты и секунды должны быть установлены на ноль.

TimeSpan также может быть отрицательным значением, поэтому в этом случае мне нужно сохранить знак ..

Я мог бы выполнить требование, если бы TimeSpan не был отрицательным значением, хотя я написал код, я не доволен его неэффективностью, так как он более громоздкий ..

Пожалуйста, предложите мне более простой и эффективный метод.

С уважением,

Это мой код, который отлично работает, когда TimeSpan не отрицательное значение ..

TimeSpan time_span = endTime.Subtract(startTime);
            TimeSpan time_span1;
            if (time_span.Minutes >= 30)
            {
                time_span1 = new TimeSpan(time_span.Hours + 1, 0, 0);
            }
            else
            {
                time_span1 = new TimeSpan(time_span.Hours, 0, 0);
            }

time_span1 будет содержать результат ..

Ответы на вопрос(3)

Ваш ответ на вопрос