我试图将“合约”的“结束日期”与datetime.now进行比较。显然,如果今天的日期超过合约结束日期,则该值将返回为负数。我想要一个负值返回为0,而已发生的任何结束日期将返回为正值。
目前,正值正常工作,但负值返回为:
-41641
用于计算值的代码如下:
var contractEndDate = contract.EndDate;
var ts = contractEndDate.Value.Subtract(DateTime.Now);
var contractDaysRemaining = ts.Days;
然后,contractDaysRemaining会在代码中稍后返回该值。
我对c#很陌生,并且想知道如何将负的contractDaysRemaining转换为0,同时保持正值不变。
提前致谢!
答案 0 :(得分:8)
为此,您需要使用Math.Max()
。
var contractDaysRemaining = Math.Max(ts.Days, 0);
Max()
会返回两个值中的较高者,因此如果您将0
作为其中一个值,则只会影响负数。
我强烈建议您查看Math class中的其他方法,因为那里有很多有用的方法。例如Round()
。
答案 1 :(得分:4)
这样的事情:
var contractDaysRemaining = ts.Days < 0 ? 0 : ts.Days;
答案 2 :(得分:4)
var contractDaysRemaining = Math.Max(ts.Days, 0);
取最大值或零。你也可以这样做:
var contractDaysRemaining = ts.Days < 0 ? 0 : ts.Days;
不太清楚。
答案 3 :(得分:1)
var contractDaysRemaining = ts.Days > 0 ? ts.Days : 0;
答案 4 :(得分:0)
if(contractDaysRemaining < 0)
contractDaysRemaining = 0
只需在那里添加该行