C# 无法识别DateTime.Parse字符串,我看不出原因
我无法理解为什么会抛出“字符串未被识别为有效的日期时间” 它抛出的条目是:C# 无法识别DateTime.Parse字符串,我看不出原因,c#,datetime,format,C#,Datetime,Format,我无法理解为什么会抛出“字符串未被识别为有效的日期时间” 它抛出的条目是: 格式数组应包括24小时时间格式 可以使用dd/MM/yyyyy HH:MM或MM/dd/yyyy HH:MM或M/d/yyyyy HH:MM格式 请注意,只有您知道您的格式是dd-MM-yyyy还是MM-dd-yyyy,因为您有12个日期和月份 您可以检查代码的示例输入,并根据这些输入仔细选择格式 希望这能有所帮助。那么,您应该为“12/12/2012 13:20”使用的日期格式是dd/MM/yyyy HH:MM,而且似
格式数组应包括24小时时间格式 可以使用
dd/MM/yyyyy HH:MM
或MM/dd/yyyy HH:MM
或M/d/yyyyy HH:MM
格式
请注意,只有您知道您的格式是dd-MM-yyyy还是MM-dd-yyyy,因为您有12个日期和月份
您可以检查代码的示例输入,并根据这些输入仔细选择格式
希望这能有所帮助。那么,您应该为“12/12/2012 13:20”使用的日期格式是
dd/MM/yyyy HH:MM
,而且似乎格式中缺少了它array@styxMM/dd/yyyyy HH:MM
*请注意,MM/dd
不是必需的,因为M/d
将匹配一位数和两位数的天数。这同样适用于hh
、hh
和mm
。我有点担心像h:mm
这样的格式的期望值是什么,因为我们不知道它是AM还是PM。@John你怎么知道2012年12月12日是mm/dd/yyyyy
还是dd/mm/yyyyyy
both@styx因为OP的每一种日期格式都是mid endian。那么M/d/yyy H:M
?同意,只要我们不知道样本输入中的一位数日期/月数是什么样子,我们就无法给出确切的答案。使用此详细信息更新答案。Thank@JohnI表示单个字符M、D、H和M模板字符同时匹配一位数和两位数。看见
string[] formats = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm", "MM/dd/yyyy hh:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
"MM/d/yyyy HH:mm:ss.ffffff" };
var delimit = line.Split(',');
try
{
id = delimit[0];
DateTime.TryParseExact(delimit[1].Trim(),formats,new CultureInfo("en-US"),DateTimeStyles.None, out openDate);
delimit[5] = delimit[5].Replace("\"","");
closedDate = DateTime.ParseExact(delimit[5].Trim(),formats,new CultureInfo("en-US"),DateTimeStyles.None);
DateTime.TryParseExact(delimit[5].Trim(),formats,new CultureInfo("en-US"),DateTimeStyles.None, out closedDate);
severity = delimit[7].Split('-').Last().Trim();
state = delimit[6].Trim();
}
catch(Exception e)
{
Console.WriteLine(line);
}