DateTime.ParseExact格式化问题

时间:2009-11-25 16:30:18

标签: 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);

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

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

由于

2 个答案:

答案 0 :(得分:6)

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

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

除此之外,我不确定为什么你有“H”和“h”格式 - 它永远不会匹配第二种格式,因为对第二种格式有效的任何东西都有效。第一

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

{"M d yyyy HHmm", "M d yyyy 0"}

答案 1 :(得分:0)

我认为它失败了因为“hmm”=“100”在凌晨1点或PM之间不明确。也许你应该坚持“嗯”或使用“hmm tt”=“100 AM”格式。

编辑:尝试过但失败了。 Jon在他的回答中说了什么,我的评论是真的。