将负.days转换为0?

时间:2013-07-08 19:57:22

标签: c# datetime negative-number

我试图将“合约”的“结束日期”与datetime.now进行比较。显然,如果今天的日期超过合约结束日期,则该值将返回为负数。我想要一个负值返回为0,而已发生的任何结束日期将返回为正值。

目前,正值正常工作,但负值返回为:

-41641

用于计算值的代码如下:

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

contractDaysRemaining会在代码中稍后返回该值。

我对c#很陌生,并且想知道如何将负的contractDaysRemaining转换为0,同时保持正值不变。

提前致谢!

5 个答案:

答案 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

只需在那里添加该行