2013-07-08 105 views
3

我想比较一个“合约”与datetime.now的“结束日期”。很明显,如果今天的日期超过了合约的结束日期,那么价值就会返回为负数。我想要一个负值返回值为0,而发生的任何结束日期将返回为正值。将负数天数转换为0?

目前,正值正常工作,但是负值得到返回:

-41641

用来计算值的代码如下:

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

contractDaysRemaining然后返回值在代码后面。

我很新的C#和想知道如何去负contractDaysRemaining转换为0,而留下正值不变。

在此先感谢!

回答

0
if(contractDaysRemaining < 0) 
    contractDaysRemaining = 0 

只需添加该行的尽头有

8

要做到这一点,你要使用Math.Max()

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

Max()返回两个值中的较高,因此,如果你给它0作为其中之一,它只会影响负数。

我强烈建议看在Math class其他方法为好,因为有很多有用的在那里。例如,Round()

+1

这个工作。十分感谢你分享这些信息。我一定会进一步检查数学课,谢谢! – Ger

+0

@Gerald - 我很高兴它有帮助,并祝你的C#经验! – Bobson

4

事情是这样的:

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

它以最大的价值或零。你也可以这样做:

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

不太清楚。

+0

math.max方法是我选择使用的方法。它运作良好,谢谢 – Ger

1
var contractDaysRemaining = ts.Days > 0 ? ts.Days : 0;