我有以下 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 应用程序。在其中一份表格中,我的客户将以
TextBox
输入日期,例如 6/20/2018,即 MM/dd/yyyy 格式。
但是,在这两种方式中我都遇到了这个错误:
System.FormatException: 'String was not recognized as a valid DateTime.'
return DateTime.ParseExact(dateInString, "M/d/yyyy", CultureInfo.InvariantCulture);
我的答案和 Fabulous 的答案之间的区别在于,我还将
dd
缩短为 d
,因此如果您的用户写 6/6/2018
,它也会起作用
您的日期格式为 MM/dd/yyyy,您的输入不匹配。现在是月/日/年
根据您的评论,要解决 6/1/2018 问题,您需要按如下方式进行操作 M/d/yyyy
您的格式字符串缺少 AM/PM 设计器:
return DateTime.ParseExact
(dateInString + " 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
// Here ---------------------------------------------^
尝试不与字符串“AM”连接
几天前,即 7 月 9 日,我也遇到了同样的异常,我只是在 0 后面附加了 9 以匹配日期格式。
尝试在月份中添加 0 以匹配日期格式中的 MM
有时您的系统时间和日期格式与测试格式不一样,您可以尝试更改系统日期和时间格式
如果你想将这个(01-01-2022)类型的字符串转换为日期 然后尝试下面的代码。
DateTime date = DateTime.ParseExact("01-01-2022", "MM-dd-yyyy", CultureInfo.InvariantCulture);
如果你想将这个(01/01/2022)类型的字符串转换为日期 然后尝试下面的代码。
DateTime date = DateTime.ParseExact("01-01-2022", "MM/dd/yyyy", CultureInfo.InvariantCulture);