System.FormatException:字符串未被识别为有效的DateTime-尝试转换MM / DD / YYYY时

时间:2018-07-13 12:02:42

标签: c# asp.net .net datetime webforms

我有以下C#方法:

DateTime ConvertStringToDate(string dateInString)
{
    try {
        //string SSD = dateInString;
        //DateTime date = Convert.ToDateTime(SSD);
        //string strDate = String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", date);
        //return Convert.ToDateTime(strDate);

        return DateTime.ParseExact(dateInString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
    }
    catch (Exception) { }
    return DateTime.Today;
} 

注释中的代码是我以前尝试过的另一种方法。

我在印度,正在为我的美国客户开发ASP.NET WebForms应用程序。在其表格之一上,我的客户将在文本框中输入日期,例如6/20/2018,它是MM / dd / yyyy格式。

但是在两种方式下我都遇到此错误:System.FormatException: 'String was not recognized as a valid DateTime.'

我在SO上尝试了许多解决方案,但没有一个起作用。

5 个答案:

答案 0 :(得分:5)

return DateTime.ParseExact(dateInString, "M/d/yyyy", CultureInfo.InvariantCulture);

Check it here

我的回答与“好极了”之间的区别在于,我还将dd缩短为d,因此,如果您的用户写了6/6/2018,它也可以工作

答案 1 :(得分:2)

您的日期格式为MM / dd / yyyy,并且您输入的内容不匹配。是M / dd / yyyy

根据您的评论,要解决6/1/2018问题,您需要执行以下操作M / d / yyyy

答案 2 :(得分:0)

您的格式字符串缺少AM / PM设计器:

return DateTime.ParseExact
    (dateInString + " 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
    // Here ---------------------------------------------^

答案 3 :(得分:0)

尝试不使用字符串“ AM”进行连接

答案 4 :(得分:0)

几天前的7月9日,我遇到了同样的异常,我只是在0后面加上0来匹配日期格式。

尝试在您的月份中添加一个0以匹配您日期格式的MM