这个TimeSpan.ParseExact行有什么问题?

时间:2011-04-06 15:46:02

标签: c# datetime .net-4.0 datetime-format

我从这次调用TimeSpan.ParseExact收到一个FormatError异常,但是我正在阅读的MSDN documentation说这个格式应该是正确的:

TimeSpan timeSpan = TimeSpan.ParseExact("172100", "HHmmss", CultureInfo.InvariantCulture);

有人可以告诉我为什么这不起作用?通过调用DateTime.ParseExact我几乎完全一样,这很好用:

DateTime datetTime = DateTime.ParseExact("090820", "yyMMdd", CultureInfo.InvariantCulture);

5 个答案:

答案 0 :(得分:15)

TimeSpan不使用与DateTime相同的格式规则。

你想要hhmmss,而不是HHmmss。

您正在查看MSDN中的错误页面 - 您想要类似的内容:

http://msdn.microsoft.com/en-us/library/se73z7b9.aspx

答案 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格式字符串来解析TimeSpanTimeSpan有自己的(稍有不同)格式字符串。有关完整列表,请参阅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;