Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串到日期时间?扩展Convert.*或更好的东西_C#_Asp.net_Datetime - Fatal编程技术网

C# 字符串到日期时间?扩展Convert.*或更好的东西

C# 字符串到日期时间?扩展Convert.*或更好的东西,c#,asp.net,datetime,C#,Asp.net,Datetime,希望我没有重新创建一些已经被问了1000次的问题,但是因为“?”-s,搜索它很困难 我想在Datetime中转换字符串?在c#中。 除此之外,还有什么更干净的方法可以做到这一点: private static DateTime? toDate(string probDate) { if (probDate == null) { return null; } else { return Convert.ToDateTime(probDate); }

希望我没有重新创建一些已经被问了1000次的问题,但是因为“?”-s,搜索它很困难

我想在Datetime中转换字符串?在c#中。 除此之外,还有什么更干净的方法可以做到这一点:

    private static DateTime? toDate(string probDate)
    {
        if (probDate == null) { return null; }
        else { return Convert.ToDateTime(probDate); }
    }
提前感谢,

哈利

视情况而定。如果probDate无法转换,您希望发生什么?该方法应该返回null还是引发异常

对评论的回应#1

因为您的方法签名是私有的,所以我假设这只是一个特定类的静态助手方法。如果这是您希望在整个应用程序中重用的内容,我将创建一个扩展方法:

public static class StringExtensions
{
    public static DateTime? ToDate(this string probDate)
    {
        // same code as above
    }
}
然后,您可以这样执行它:

string probDate = "1/4/2012";
DateTime? toDate = probDate.ToDate();
视情况而定。如果probDate无法转换,您希望发生什么?该方法应该返回null还是引发异常

对评论的回应#1

因为您的方法签名是私有的,所以我假设这只是一个特定类的静态助手方法。如果这是您希望在整个应用程序中重用的内容,我将创建一个扩展方法:

public static class StringExtensions
{
    public static DateTime? ToDate(this string probDate)
    {
        // same code as above
    }
}
然后,您可以这样执行它:

string probDate = "1/4/2012";
DateTime? toDate = probDate.ToDate();

你至少可以使用一个条件:

private static DateTime? ToDate(string text)
{
    return text == null ? (DateTime?) null : Convert.ToDateTime(text);
}
就我个人而言,我可能会使用
DateTime.ParseExact
和预期的格式,而不是
Convert.ToDateTime
,但这是另一回事


你还没有真正解释这里的大图是什么-文本来自哪里?它是否具有预期的格式?你需要对文化敏感吗?如果无法解析文本,您希望发生什么情况?

您至少可以使用条件:

private static DateTime? ToDate(string text)
{
    return text == null ? (DateTime?) null : Convert.ToDateTime(text);
}
就我个人而言,我可能会使用
DateTime.ParseExact
和预期的格式,而不是
Convert.ToDateTime
,但这是另一回事

你还没有真正解释这里的大图是什么-文本来自哪里?它是否具有预期的格式?你需要对文化敏感吗?如果无法解析文本,您希望发生什么情况?

我会使用方法(如果您使用的是.Net 3.5+)。它非常优雅,而且可以重复使用

像这样:

public static class Extensions
{
    public static DateTime? ToNullableDate(this String dateString)
    {
        if (String.IsNullOrEmpty((dateString ?? "").Trim()))
            return null;

        DateTime resultDate;
        if(DateTime.TryParse(dateString, out resultDate))
            return resultDate;

        return null;
    }
}


public class Test
{
    public Test()
    {
        string dateString = null;
        DateTime? nullableDate = dateString.ToNullableDate();            
    }
}
我会使用方法(如果您使用的是.NET3.5+)。它非常优雅,而且可以重复使用

像这样:

public static class Extensions
{
    public static DateTime? ToNullableDate(this String dateString)
    {
        if (String.IsNullOrEmpty((dateString ?? "").Trim()))
            return null;

        DateTime resultDate;
        if(DateTime.TryParse(dateString, out resultDate))
            return resultDate;

        return null;
    }
}


public class Test
{
    public Test()
    {
        string dateString = null;
        DateTime? nullableDate = dateString.ToNullableDate();            
    }
}

在C#中没有
string?
这样的东西,因为
string
是一种引用类型,因此已经可以为空。你是对的,很抱歉输入错误。在C#中没有
string?
这样的东西,因为
string
是一种引用类型,因此已经可以为空。你是对的,很抱歉输入错误。如果设置了probDate,默认情况下,它可以转换,因为它是一个系统集变量。与其说是这个细节的问题,不如说是在何处实现这个新函数:它在某种程度上“Convert”或其他什么东西有意义吗?如果设置了probDate,它可以在默认情况下被转换,因为它是一个系统设置变量。与其说是这个细节的问题,不如说是在哪里实现这个新功能:它在某种程度上“转换”或其他什么东西有意义吗?这正是我要找的东西!扩展字符串看起来是合法的,那么Convert呢?据我所知,您不能扩展Convert,因为它是一个静态类。我会坚持延长字符串。这正是我要找的东西!扩展字符串看起来是合法的,那么Convert呢?据我所知,您不能扩展Convert,因为它是一个静态类。我会坚持用延长线。