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

本文关键字:日期 时间 字符串 转换 | 更新日期: 2023-09-27 18:11:11

我有以下代码。我要做的是,如果它是一个空值的日期返回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;
}

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

一个更有希望的解决方案是使用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);

Update:在这种情况下,如果你期望返回恰好"12/12/15",那么DateTime对象代表了一个结构体与所有日期和时间字段,所以即使值是从ShortDateTime字符串(12/12/15)解析仍然对象将有默认值的时间即。"12:00:00点"。要转换这些值,您可以再次调用var date = StrToDate("05/01/2015").Value.ToString("MM/dd/yy");

试一试:

var datetime =转换。ToDateTime(" 11/25,1992 ");

返回datetime.ToShortDateString ();