yyyyMMddtt中的DateTime.ParseExact错误

Nik*_*wal 3 c# datetime

我有一个DateTime对象

DateTime dtt = new DateTime(2012, 6, 18, 12, 0, 0)
Run Code Online (Sandbox Code Playgroud)

我正在将它转换为字符串

string str = dtt.ToString("yyyyMMddtt");
Run Code Online (Sandbox Code Playgroud)

我得到str"20120618PM"

好到这里

但是当我尝试使用DateTime.ParseExact()将其转换回DateTime时,我收到一个错误 String was not recognised a valid DateTime

dtt = DateTime.ParseExact(str, "yyyyMMddtt", null);
Run Code Online (Sandbox Code Playgroud)

我甚至尝试过提供文化,但我仍然遇到错误

dtt = DateTime.ParseExact(str, "yyyyMMddtt", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

我错过了什么错?

Mar*_*age 5

根据DateTime.ParseExact方法的文档,您将获得FormatException以下情况.

s中的小时组件和AM/PM指示符不一致.

您根本没有小时组件,并且没有任何协议导致异常.

如果你真的想坚持使用这种格式,yyyyMMddtt你必须执行自己的AM/PM部分解析,并根据它修改时间部分DateTime.然后,您可以使用解析日期的剩余部分yyyyMMdd.