在 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 TimeSpan
与 DateTime
的 subtraction 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;
在 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 TimeSpan
与 DateTime
的 subtraction 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;