C# 分析看似正确的时间跨度时引发异常

C# 分析看似正确的时间跨度时引发异常,c#,parsing,timespan,C#,Parsing,Timespan,我正在使用TimeSpan.ParseExact方法来解析时间跨度。但是,为什么以下操作失败并抛出异常 string time = "23:10:00"; string format = "HH:mm:ss"; TimeSpan timeSpan = TimeSpan.ParseExact(time, format, CultureInfo.InvariantCulture); 从MSDN上的文章判断,该输入字符串的格式是正确的。有什么想法吗?您链接到自定义的日期时间格式说明符-但是您没有解析

我正在使用
TimeSpan.ParseExact
方法来解析时间跨度。但是,为什么以下操作失败并抛出异常

string time = "23:10:00";
string format = "HH:mm:ss";
TimeSpan timeSpan = TimeSpan.ParseExact(time, format, CultureInfo.InvariantCulture);

从MSDN上的文章判断,该输入字符串的格式是正确的。有什么想法吗?

您链接到自定义的
日期时间
格式说明符-但是您没有解析到
日期时间
,而是解析到
时间跨度
,因此您需要-这意味着使用“hh”而不是“hh”。此外,根据文档,您需要避开冒号-因此您确实希望:

string format = @"hh\:mm\:ss";

我已经验证了这是否适用于您的示例值。

您链接到自定义的
日期时间
格式说明符-但是您没有解析到
日期时间
,而是解析到
时间跨度
,因此您需要-这意味着使用“hh”而不是“hh”。此外,根据文档,您需要避开冒号-因此您确实希望:

string format = @"hh\:mm\:ss";

我已经验证了这与你的样本值一起工作。

这看起来不像C++。它应该被标记为C++还是CLI?这看起来不像C++。它应该被标记为C#还是CLI?Man,为什么格式字符串必须不同?这将在我们的代码中引起严重的问题。再次感谢你,伙计。@Steztric:如果你把
TimeSpan
格式和
DateTime
格式视为可互换的,那么它只会在你的代码中引起问题。它们是非常不同的类型,因此您应该以不同的方式对待格式:)伙计,为什么格式字符串必须不同?这将在我们的代码中引起严重的问题。再次感谢你,伙计。@Steztric:如果你把
TimeSpan
格式和
DateTime
格式视为可互换的,那么它只会在你的代码中引起问题。它们是非常不同的类型,因此您应该以不同的方式对待格式:)