Конвертировать отрицательные.days в 0?

Я пытаюсь сравнить "дату окончания" "контракта" с datetime.now. Очевидно, что если сегодняшняя дата превышает дату окончания контракта, то значение возвращается как отрицательное. Я хочу, чтобы значение, которое является отрицательным, возвращалось как 0, тогда как любая дата окончания, которая произошла, будет возвращаться как положительное значение.

В настоящее время положительное значение работает правильно, однако отрицательные значения возвращаются как:

-41641

Код, используемый для вычисления значения, выглядит следующим образом:

var contractEndDate = contract.EndDate;
var ts = contractEndDate.Value.Subtract(DateTime.Now);
var contractDaysRemaining = ts.Days;

Затем contractDaysRemaining возвращает значение в коде.

Я довольно новичок в C# и хотел бы знать, как преобразовать отрицательный contractDaysRemaining в 0, оставив положительное значение без изменений.

Заранее спасибо!

5 ответов

Для этого вы хотите использовать Math.Max(),

var contractDaysRemaining = Math.Max(ts.Days, 0);

Max() возвращает более высокое из двух значений, поэтому, если вы дадите ему 0 как один из них это повлияет только на отрицательные числа.

Я настоятельно рекомендую взглянуть и на другие методы в классе Math, поскольку там есть много полезных. Round(), например.

Что-то вроде этого:

var contractDaysRemaining = ts.Days < 0 ? 0 : ts.Days;
var contractDaysRemaining = Math.Max(ts.Days, 0);

Требуется максимум значения или ноль. Вы также можете сделать:

var contractDaysRemaining = ts.Days < 0 ? 0 : ts.Days;

Не совсем так ясно.

var contractDaysRemaining = ts.Days > 0 ? ts.Days : 0;
if(contractDaysRemaining < 0)
    contractDaysRemaining = 0

просто добавьте эту строку в конце там

Другие вопросы по тегам