DateTime.ParseExact格式化问题

Kar*_*ren 3 c# datetime

我有日期时间字符串看起来像以下任何一样:

"1 13 2009 2300","1 14 2009 0","1 14 2009 100"

我需要解析为DateTime.

我试过了:

string[] sExpectedFormats = {"M d yyyy Hmm", "M d yyyy hmm", "M d yyyy 0"};
DateTime dtReportDateTime = DateTime.ParseExact(sReportDateTime, 
 sExpectedFormats, 
 System.Globalization.CultureInfo.InvariantCulture,
 System.Globalization.DateTimeStyles.None);
Run Code Online (Sandbox Code Playgroud)

但它在第三个"1 14 2009 100"上失败了.我不确定使用什么格式?

为了澄清,我在feed中将这些数据作为日期部分"1 14"和时间部分"100"得到,所以我将它连接起来以便我可以解析为DateTime.

谢谢

Jon*_*eet 6

怀疑它将"100"解释为"10"后跟"0" - 即将H或h解析为"10",然后找不到分钟的两位数.

坦率地说,我很想在解析之前手动重新格式化字符串,这样它总是以4位而不是3位结束.不情愿,因为我通常会推荐它们,这听起来像是正则表达式的工作:)

顺便说一句,我不确定你为什么同时拥有"H"和"h"格式 - 它永远不会匹配第二种格式,因为对第二种格式有效的东西对第一种格式有效.

如果你按照我的建议事先修好了字符串,那么你就可以使用了

{"M d yyyy HHmm", "M d yyyy 0"}
Run Code Online (Sandbox Code Playgroud)