将String转换为shortdate时间

时间:2015-09-03 23:14:34

标签: c# asp.net

我有以下代码。我想要做的是,如果它是日期返回NULL的空值或者返回短日期。示例:12/12/15。我收到一个错误:

  

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

public DateTime? StrToDate(string val)
{      
    DateTime? dt = string.IsNullOrEmpty(val) 
        ? (DateTime?)null 
        : DateTime.ParseExact(val, "MM/dd/yyyy", null);    
    return dt;
}

2 个答案:

答案 0 :(得分:2)

更有希望的解决方案是使用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 = StrToDate("05/01/2015").Value.ToString("MM/dd/yy");

答案 1 :(得分:-1)

尝试一下:

var datetime = Convert.ToDateTime(" 1992年11月25日");

return datetime.ToShortDateString();