2013-07-08 139 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;