System.DateTime.ParseExact:无法识别的格式字符串

时间:2014-01-10 03:01:29

标签: c# .net datetime timestamp iso8601

var timestamp = DateTime.ParseExact("20140101T000000Z", "YYYYMMDDThhmmssZ", CultureInfo.InvariantCulture);

System.FormatException was unhandled by user code
  HResult=-2146233033
  Message=String was not recognized as a valid DateTime.
  Source=mscorlib

这对我来说毫无意义,因为YYYYMMDDThhmmssZ是ISO-8601 YYYY-MM-DDThh:mm:ssZ,并删除了特殊格式字符。

2 个答案:

答案 0 :(得分:5)

问题是YYYYDD不是有效的格式说明符。请改用yyyydd,如果您想使用24小时制,请使用HH

var timestamp = DateTime.ParseExact("20140101T000000Z", "yyyyMMddTHHmmssZ", CultureInfo.InvariantCulture);

另请注意,Z此处被解释为文字Z字符。它不能替代时区说明符z

进一步阅读

答案 1 :(得分:1)

您的日期格式不正确。

YYYY应为yyyyDD应为dd

以下完整格式应该有效

yyyyMMddTHHmmssZ

,例如

var timestamp = DateTime.ParseExact("20140101T000000Z", "yyyyMMddTHHmmssZ", CultureInfo.InvariantCulture);

MSDN对于自定义格式:http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx