减去c#中的DateOnly



在c#中,我不能对DateOnly变量使用减法,不像DateTime。有什么解释吗?

var a = new DateTime(2000, 01, 01);
var b = new DateTime(1999, 01, 01);
//var c = a.Subtract(b);
var c = a - b;
var d = new DateOnly(2000, 01, 01);
var e = new DateOnly(1999, 01, 01);
var f = d - e; // Error - Operator '-' cannot be applied to operands of type 'DateOnly' and 'DateOnly'

概念上DateOnly表示一整天,而不是午夜或给定一天中的任何其他特定时间,因此,用DateTime的减法运算符减去一个DateOnly在逻辑上不能返回TimeSpan

如果你想在DateOnlys上执行算术,你需要明确想要的单元。

DateOnly有一个DayNumber属性,它返回从01/01/0001开始的天数,所以如果你想确定2个DateOnly值之间的天数,你可以这样做:

var d = new DateOnly(2000, 01, 01);
var e = new DateOnly(1999, 01, 01);
var daysDifference = d.DayNumber - e.DayNumber;

您可以使用DayNumber属性进行减法,f将保存d和e之间的天数。

var f = d.DayNumber - e.DayNumber;

考虑一下:2022年6月2日- 2022年6月1日= ?答案是1还是2?它包含整整2天,但差1天。通过强迫我们使用DayNumber,只有一个可能的答案。

我不知道他们为什么不让它成为可能的确切原因。但是如果您查看文档DateOnly,它不包含操作符加法和减法。DateTime

回答你的问题为什么- DateOnly在操作符部分它只是没有减法实现而DateTime确实有一个。你所能做的就是创建你自己的扩展,类似于这个。

相关内容

  • 没有找到相关文章

最新更新