C# 将字符串转换为短日期时间

C# 将字符串转换为短日期时间,c#,asp.net,C#,Asp.net,我有以下代码。我试图做的是,如果它是一个null值,则返回null,否则返回较短的日期。示例:2015年12月12日。我得到一个错误: 将字符串转换为DateTime时,在将每个变量放入DateTime对象之前,解析字符串以获取日期 一个更有希望的解决方案是使用TryParseExact()。同样,TryParseExact或ParseExact的情况是,它只接受提供的字符串格式来将其解析为DateTime public static DateTime? StrToDate(string

我有以下代码。我试图做的是,如果它是一个null值,则返回null,否则返回较短的日期。示例:2015年12月12日。我得到一个错误:

将字符串转换为DateTime时,在将每个变量放入DateTime对象之前,解析字符串以获取日期


一个更有希望的解决方案是使用
TryParseExact()
。同样,TryParseExact或ParseExact的情况是,它只接受提供的字符串格式来将其解析为DateTime

    public static DateTime? StrToDate(string val)
    {
        CultureInfo enUS = new CultureInfo("en-US");
        DateTime dateValue;
        if (DateTime.TryParseExact(val, "MM/dd/yyyy", enUS,
                                   DateTimeStyles.AllowWhiteSpaces, out dateValue))
        {
            return (dateValue);
        }
        else
        {
            return null;
        }
    }
现在,测试用例如下所示:

        // Valid date
        var date = StrToDate("05/01/2000");

        // Null
        var nulldateFromEmpty = StrToDate(string.Empty);

        // Null
        var nullDateFromNullString = StrToDate(null);
更新:如果您希望准确返回“12/12/15”,则DateTime对象表示一个包含所有日期和时间字段的结构,因此即使该值是从ShortDateTime字符串(12/12/15)解析的,该对象仍将具有时间的默认值,即“12:00:00 AM”。要转换这些值,您可以再次调用
var date=strotdate(“05/01/2015”).Value.ToString(“MM/dd/yy”)

尝试一下:

var datetime=Convert.ToDateTime(“1992年11月25日”)


return datetime.ToShortDateString()

你要传递给函数的字符串是什么?首先,你到底从哪里得到这个错误?这不是我见过的错误。第二,您传递的是2位数的年份,但是parse方法显式地查找4位数。
        // Valid date
        var date = StrToDate("05/01/2000");

        // Null
        var nulldateFromEmpty = StrToDate(string.Empty);

        // Null
        var nullDateFromNullString = StrToDate(null);