3

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

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

-41641

用于计算值的代码如下:

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

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

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

提前致谢!

4

5 回答 5

8

为此,您需要使用Math.Max().

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

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

我强烈建议您也查看Math 类中的其他方法,因为那里有很多有用的方法。 Round(), 例如。

于 2013-07-08T20:00:42.683 回答
4

像这样的东西:

var contractDaysRemaining = ts.Days < 0 ? 0 : ts.Days;
于 2013-07-08T20:00:47.380 回答
4
var contractDaysRemaining = Math.Max(ts.Days, 0);

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

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

不太清楚。

于 2013-07-08T20:00:47.807 回答
1
var contractDaysRemaining = ts.Days > 0 ? ts.Days : 0;
于 2013-07-08T20:01:06.830 回答
0
if(contractDaysRemaining < 0)
    contractDaysRemaining = 0

只需在最后添加那行

于 2013-07-08T20:00:27.917 回答