如何将可空DateTime转换为可空DateOnly?所以DateTime?到DateOnly?
错误说:
Error CS0029不能隐式转换类型“System.DateOnly?”到“System.DateTime?”
我可以通过以下操作将DateTime转换为DateOnly:
DateOnly mydate = DateOnly.FromDateTime(mydatetime);但是明渠呢?
我有办法但我不认为是最好的主意..。
发布于 2022-05-04 20:32:19
让我们创建一个与FromDateTime完全相同的方法,只作为DateTime上的一个扩展调用
public static DateOnly ToDateOnly(this DateTime datetime)
=> DateOnly.FromDateTime(datetime);现在,您可以使用空条件成员访问操作符?.将此方法提升到其可空版本:
var myNullableDateOnly = myNullableDateTime?.ToDateOnly();不幸的是,C#没有“空条件静态方法调用操作符”.因此,我们需要这个“扩展方法解决方案”。
发布于 2022-05-04 20:22:42
您可以创建一个DateTime扩展方法:
public static class DateTimeExtends
{
public static DateOnly ToDateOnly(this DateTime date)
{
return new DateOnly(date.Year, date.Month, date.Day);
}
public static DateOnly? ToDateOnly(this DateTime? date)
{
return date != null ? (DateOnly?)date.Value.ToDateOnly() : null;
}
}并在任何DateTime实例上使用:
DateOnly date = DateTime.Now.ToDateOnly();注意:没有测试,可能有一个tipo错误..。
发布于 2022-05-04 20:24:59
public static DateOnly? ToNullableDateOnly(this DateTime? input)
{
if (input == null) return null;
return DateOnly.FromDateTime(input.Value);
}https://stackoverflow.com/questions/72118892
复制相似问题