解析自定义日期时间格式
我必须从格式yyyyMMddhhmmss
格式的字符串解析DateTime
对象。解析自定义日期时间格式
如果我运行这段代码,它工作正常:
DateTime y = new DateTime(2013, 07, 22, 15, 35, 23);
string x = y.ToString("yyyyMMddhhmmss", CultureInfo.InvariantCulture);
但是,如果我运行这段代码 - 看似相反的操作 - 我得到一个异常:
string x = "20130722153523";
DateTime y = DateTime.ParseExact(x, "yyyyMMddhhmmss", CultureInfo.InvariantCulture);
唯一的例外是:
System.FormatException: String was not recognized as a valid DateTime.
我很难过,因为这里有什么问题。我究竟做错了什么?
注意:不要担心时区。我可以在以后处理正确的时区。
的问题是,您所指定的日期,时间格式使用hh
为12小时格式,但输入字符串中有在这方面15
。它不能解析这个,因为15超出了预期的范围。
尝试使用HH
为24小时时间格式来代替:
string x = "20130722153523";
DateTime y = DateTime.ParseExact(x, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
进一步阅读:
直接来自MSDN:如果格式是自定义格式模式不包含日期或时间分隔符(例如“yyyyMMdd HHmm”),请使用供应商参数的不变文化和每个自定义格式说明符的最宽格式。例如,如果要以格式指定小时数,请指定较宽的格式“HH”,而不是较窄的格式“H”。 –
+1。此外,请检查此:http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx - (quote)**给调用方的说明**: 在.NET Framework 4中,ParseExact方法将引发FormatException if要解析的字符串包含一个小时组件和AM/PM指示符,这些指示符不一致。在.NET Framework 3.5和更早版本中,AM/PM标识符被忽略。(/ quote) – Renan
在第一码样本x是20130722033523,不20130722153523 – empi