将负数.days转换为0

本文关键字:转换 days | 更新日期: 2023-09-27 18:21:28

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

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

-41641

用于计算该值的代码如下:

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

contractDaysMaining随后在代码中返回该值。

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

提前感谢!

将负数.days转换为0

要做到这一点,您需要使用Math.Max()
var contractDaysRemaining = Math.Max(ts.Days, 0);

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

我强烈建议大家也看看数学课上的其他方法,因为那里有很多有用的方法。例如Round()

类似这样的东西:

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

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

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

不太清楚。

var contractDaysRemaining = ts.Days > 0 ? ts.Days : 0;
if(contractDaysRemaining < 0)
    contractDaysRemaining = 0

只需在的末尾添加该行