13

我必须从具有格式DateTime的字符串中解析对象。yyyyMMddhhmmss

如果我运行此代码,它工作正常:

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.

我对这里出了什么问题感到困惑。我究竟做错了什么?

注意:不要担心时区。我可以稍后处理获得正确的时区。

4

1 回答 1

24

问题是您指定的日期时间格式hh用于 12 小时时间格式,但输入字符串15在该区域中。它无法解析这个,因为 15 超出了预期范围。

尝试改用HH24 小时时间格式:

string x = "20130722153523";
DateTime y = DateTime.ParseExact(x, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);

延伸阅读:

于 2013-07-22T20:26:20.237 回答