C# 中的 DateOnly 相减

Sil*_*nus 37 c# .net-6.0 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'
Run Code Online (Sandbox Code Playgroud)

Joh*_*lay 70

从概念上讲,DateOnly表示一整天,而不是午夜或给定日期的任何其他特定时间,因此DateOnly从另一个时间减去另一个时间不能在逻辑上返回TimeSpanas withDateTime减法运算符

如果要对DateOnlys 执行算术运算,则需要明确所需的单位。

DateOnly有一个属性,返回自 01/01/0001 以来的整日DayNumber数,因此如果您想确定两个值之间的整日数,可以执行以下操作:DateOnly

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

var daysDifference = d.DayNumber - e.DayNumber;
Run Code Online (Sandbox Code Playgroud)


小智 9

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

var f = d.DayNumber - e.DayNumber;
Run Code Online (Sandbox Code Playgroud)