Конвертировать отрицательные.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;
Не совсем так ясно.
if(contractDaysRemaining < 0)
contractDaysRemaining = 0
просто добавьте эту строку в конце там