在C语言中,与DateTime不同,我不能对DateOnly个变量使用减法.有什么解释吗?

  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代表一整天,而不是给定一天的午夜,因此从一个DateOnly中减go 另一个DateOnly在逻辑上不能像DateTimesubtraction operator那样返回TimeSpan.

如果要在DateOnly秒上执行算术运算,需要明确所需的单位.

DateOnly有一个DayNumber属性,该属性返回自0001年1月1日以来的whole days数,因此,如果要确定2个DateOnly值之间的天数,可以执行以下操作:

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

var daysDifference = d.DayNumber - e.DayNumber;

Csharp相关问答推荐

有没有办法把+02:00转换成TimeSpan?""

为什么这个Reflection. Emit代码会导致一个DDL ViolationException?

迭代C#List并在数据库中 for each 元素执行SELECT语句—更有效的方式?

安装附加的. exe与Visual Studio

实体核心框架--HasColumnType和HasPrecision有什么不同?

Thad.Sept()vs Task.Delay().Wait()

UWP中的任务和界面

ASP.NET配置kestrel以使用Windows证书存储中的HTTPS

在C#中过滤Excel文件

在扩展方法中,IEnumerable<;T>;不会转换为IEumerable<;T&>

未在Windows上运行的Maui项目

Blazor服务器项目中的Blazor/.NET 8/Web API不工作

ASP.NET MVC数据批注验证组复选框

将列表转换为带有逗号分隔字符串形式的值的字典

Xamarin.Forms项目中缺少MainPage.xaml

我可以阻止类型上的Object.ToString()吗?

使用Try-Catch-Finally为API端点处理代码--有什么缺点?

我应该使用IMhemyCache来存储承载令牌,还是应该为Azure函数中的401个错误实施Polly重试策略?

Serilog:如何编写只有一个级别的文件

无法使用EF核心插入已有导航属性的新实体