我有一个DateTime对象
DateTime dtt = new DateTime(2012, 6, 18, 12, 0, 0)
我正在将它转换为字符串
string str = dtt.ToString("yyyyMMddtt");
我将str
称为“20120618PM”
到此为止
但是当我尝试使用DateTime.ParseExact()将其转换回DateTime时,我收到一个错误
String was not recognised a valid DateTime
dtt = DateTime.ParseExact(str, "yyyyMMddtt", null);
我甚至尝试过提供文化,但我仍然收到错误
dtt = DateTime.ParseExact(str, "yyyyMMddtt", CultureInfo.InvariantCulture);
我错过了什么错误?
答案 0 :(得分:5)
根据DateTime.ParseExact method的文档,您将在以下情况中获得FormatException
。
s中的小时组件和AM / PM指示符不一致。
您根本没有小时组件,并且没有任何协议导致异常。
如果你真的想要坚持格式yyyyMMddtt
,你必须自己解析AM / PM部分,并根据它修改DateTime
的时间部分。然后,您可以使用yyyyMMdd
解析日期的剩余部分。
答案 1 :(得分:1)
此字符串"20120618PM"
不包含任何time
。
您确定它与您获得的字符串相同吗?
答案 2 :(得分:0)
更改格式yyyyMMdd hh:mm:ss希望其wrk
DateTime dtt = new DateTime(2012, 6, 18, 12, 0, 0);
string str = dtt.ToString("yyyyMMdd hh:mm:ss");
dtt = DateTime.ParseExact(str, "yyyyMMdd hh:mm:ss", null);
答案 3 :(得分:0)
正如Martin和Asif建议的那样,你必须在字符串中包含小时以便ParseExact确定AM / PM。
DateTime dtt = new DateTime(2012, 6, 18, 12, 0, 0);
string str = dtt.ToString("yyyyMMddhhtt");
dtt = DateTime.ParseExact(str, "yyyyMMddhhtt", CultureInfo.InvariantCulture);