如何转换System.DateTime?到 System.DateOnly?

Lea*_*dro 10 .net c# datetime .net-6.0 dateonly

如何将 nullable 转换DateTime为 nullable DateOnly?所以DateTime?为了DateOnly?

错误说:

错误 CS0029 无法隐式转换类型“System.DateOnly?” 到“系统.日期时间?”

我可以通过DateTime以下DateOnly方式从 转换为:

DateOnly mydate = DateOnly.FromDateTime(mydatetime);
Run Code Online (Sandbox Code Playgroud)

但是可为 null 的值又如何呢?

我有办法,但我认为这不是最好的主意......

Hei*_*nzi 11

让我们创建一个与 完全相同的方法FromDateTime,只是作为 的扩展来调用DateTime

public static DateOnly ToDateOnly(this DateTime datetime) 
    => DateOnly.FromDateTime(datetime);
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用 null 条件成员访问运算符?.将此方法提升为其可为 null 的版本:

var myNullableDateOnly = myNullableDateTime?.ToDateOnly();
Run Code Online (Sandbox Code Playgroud)

不幸的是,C# 没有“空条件静态方法调用运算符”。因此,我们需要这个“扩展方法解决方法”。


Joe*_*orn 4

public static DateOnly? ToNullableDateOnly(this DateTime? input) 
{
    if (input == null) return null;
    return DateOnly.FromDateTime(input.Value);
}
Run Code Online (Sandbox Code Playgroud)