我有以下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上尝试了许多解决方案,但没有一个起作用。
答案 0 :(得分:5)
return DateTime.ParseExact(dateInString, "M/d/yyyy", CultureInfo.InvariantCulture);
我的回答与“好极了”之间的区别在于,我还将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