我的日期时间字符串看起来像以下任何一样:
“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。
由于
答案 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在他的回答中说了什么,我的评论是真的。