如何在c#中将字符串转换为特定的日期时间格式?

如何在c#中将字符串转换为特定的日期时间格式?,c#,datetime,parsing,C#,Datetime,Parsing,如何将字符串“28/09/2009”转换为特定格式的DateTime? 前任: 我想将“2009-09-2817:30:40”转换为DateTime。 我想将“28/09/2009 17:30:40”转换为DateTime。 我想将“20090928 17:30:40”转换为DateTime 有多种可能的格式。我试过这个: string[] formats = new string[] {"yyyymmdd","yyyymmddThhmmss","yyyy/mm/dd hh:mm:ss","y

如何将字符串
“28/09/2009”
转换为特定格式的
DateTime
? 前任: 我想将“2009-09-2817:30:40”转换为DateTime。 我想将“28/09/2009 17:30:40”转换为DateTime。 我想将“20090928 17:30:40”转换为DateTime

有多种可能的格式。我试过这个:

string[] formats = new string[] {"yyyymmdd","yyyymmddThhmmss","yyyy/mm/dd  hh:mm:ss","yyyy/mm/dd","yyyy-mm-dd hh:mm:ss","yyyy-mm-dd"};
IFormatProvider culture = new CultureInfo("en-US", true);
DateTime formattedDate = DateTime.ParseExact(aDate, formats, culture, DateTimeStyles.None);
此示例引发异常,消息为“字符串未被识别为有效的日期时间”


上面的代码有什么问题?

没有一种格式将日期放在第一位,例如:
“dd/MM/yyyy”

还要注意大写字母“M”,因为小写字母“M”代表“分钟”。你的工作时间也有类似的问题;由于您的样本都使用24小时时间,因此您需要大写字母“H”

格式字符串数组应如下所示:

string[] formats = {"dd/MM/yyyy", "yyyy-MM-dd HH:mm:ss", "dd/MM/yyyy HH:mm:ss", "yyyyMMdd HH:mm:ss"};
这些格式与您提供的示例字符串完全匹配

此外,在这种情况下,您可能希望使用不变区域性,而不是
en-US
。否则,格式字符串中的“/”字符实际上是特定于区域性的日期分隔符,用户可能会在其本地系统上使用它

最后,由于很明显在匹配字符串时遇到问题,您可能希望使用
TryParseExact()
,它的工作原理与parse-exact类似,但使用
out
参数而不是返回值,这样它就可以返回一个布尔值来指示成功或失败,而不是引发异常

请参见此处的完整格式字符串参考:

Falaíbrazuca!:)你能再给我们一些关于你的情况的信息吗?您是否收到三种格式的日期,且上下文相同。。。。我需要阅读一个xml文档。在此文档中,有表示日期的字符串。但是这些日期可以有多种格式。我必须识别这些格式并将字符串转换为DateTime。