首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐式转换类型System.DateTime的推荐方法是什么?去System.DateOnly?

隐式转换类型System.DateTime的推荐方法是什么?去System.DateOnly?
EN

Stack Overflow用户
提问于 2022-05-04 20:08:01
回答 4查看 610关注 0票数 1

如何将可空DateTime转换为可空DateOnly?所以DateTime?DateOnly?

错误说:

Error CS0029不能隐式转换类型“System.DateOnly?”到“System.DateTime?”

我可以通过以下操作将DateTime转换为DateOnly

代码语言:javascript
复制
DateOnly mydate = DateOnly.FromDateTime(mydatetime);

但是明渠呢?

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-05-04 20:32:19

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

代码语言:javascript
复制
public static DateOnly ToDateOnly(this DateTime datetime) 
    => DateOnly.FromDateTime(datetime);

现在,您可以使用空条件成员访问操作符?.将此方法提升到其可空版本:

代码语言:javascript
复制
var myNullableDateOnly = myNullableDateTime?.ToDateOnly();

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

票数 3
EN

Stack Overflow用户

发布于 2022-05-04 20:22:42

您可以创建一个DateTime扩展方法:

代码语言:javascript
复制
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实例上使用:

代码语言:javascript
复制
DateOnly date = DateTime.Now.ToDateOnly();

注意:没有测试,可能有一个tipo错误..。

票数 1
EN

Stack Overflow用户

发布于 2022-05-04 20:24:59

代码语言:javascript
复制
public static DateOnly? ToNullableDateOnly(this DateTime? input) 
{
    if (input == null) return null;
    return DateOnly.FromDateTime(input.Value);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72118892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档