在 C# 中减去 DateOnly

Subtract DateOnly in C#

在 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 it doesn't contain the operator addition and subtraction. DateTime 确实如此。

回答您的问题,为什么 - DateOnly in operators section it just doesn't have subtraction implemented while DateTime 确实有一个。你可以做的是创建你自己的类似于这个的扩展。

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

var f = d.DayNumber - e.DayNumber;

概念上 DateOnly 代表一整天,而不是午夜或给定日期的任何其他特定时间,因此从另一个 DateOnly 中减去另一个 DateOnly 在逻辑上不能 return TimeSpanDateTimesubtraction operator.

如果您想对 DateOnly 进行算术运算,您需要明确所需的单位。

DateOnly 有一个 DayNumber 属性,即 return 自 01 年 1 月以来 整整 的天数/ 0001,所以如果你想确定 2 DateOnly 值之间的天数,你可以执行以下操作:

var d = new DateOnly(2000, 01, 01);
var e = new DateOnly(1999, 01, 01);

var daysDifference = d.DayNumber - e.DayNumber;