我从这次调用TimeSpan.ParseExact收到一个FormatError异常,但是我正在阅读的MSDN documentation说这个格式应该是正确的:
TimeSpan timeSpan = TimeSpan.ParseExact("172100", "HHmmss", CultureInfo.InvariantCulture);
有人可以告诉我为什么这不起作用?通过调用DateTime.ParseExact我几乎完全一样,这很好用:
DateTime datetTime = DateTime.ParseExact("090820", "yyMMdd", CultureInfo.InvariantCulture);
答案 0 :(得分:15)
TimeSpan不使用与DateTime相同的格式规则。
你想要hhmmss,而不是HHmmss。
您正在查看MSDN中的错误页面 - 您想要类似的内容:
答案 1 :(得分:5)
参考这个更准确的文档:http://msdn.microsoft.com/en-us/library/ee372287.aspx
您需要使用hh
几个小时,而不是HH
。
答案 2 :(得分:3)
根据Custom TimeSpan Format Strings,小时数由“h”代替,而不是“H”。
所以这很好用:
TimeSpan timeSpan = TimeSpan.ParseExact("172100", "hhmmss",
CultureInfo.InvariantCulture);
您链接的文档适用于自定义日期和时间格式字符串,这些字符串不相同。他们是DateTime.ParseExact
等;我链接的文档是TimeSpan.ParseExact
等。
答案 3 :(得分:2)
您尝试使用DateTime
格式字符串来解析TimeSpan
。 TimeSpan
有自己的(稍有不同)格式字符串。有关完整列表,请参阅MSDN:Custom TimeSpan Format Strings
特别要将HH
更改为hh
。这会给你:
TimeSpan timeSpan = TimeSpan.ParseExact("172100",
"hhmmss", // Note this parameter
CultureInfo.InvariantCulture);
答案 4 :(得分:2)
将字符串解析为DateTime值,然后减去它的Date值以获得TimeSpan的时间:
DateTime t = DateTime.ParseExact("172100", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;