C# 为什么TimeSpan字符串格式会解析为异常?
在我的c#MVC2项目中,我有以下代码行:C# 为什么TimeSpan字符串格式会解析为异常?,c#,asp.net-mvc-2,.net-4.0,string-formatting,timespan,C#,Asp.net Mvc 2,.net 4.0,String Formatting,Timespan,在我的c#MVC2项目中,我有以下代码行: string.Format(@"{0\:HH\:mm}", new TimeSpan(0)) 此行导致以下异常: System.FormatException: Input string was not in a correct format. 有人能告诉我为什么吗?我使用的是C#、asp.net、mvc2和.net framework 4您的格式字符串使用的是HH-它应该是HH 请参阅MSDN上的 此外,您的第一个:不应转义-它是占位符0的一部分
string.Format(@"{0\:HH\:mm}", new TimeSpan(0))
此行导致以下异常:
System.FormatException: Input string was not in a correct format.
有人能告诉我为什么吗?我使用的是C#、asp.net、mvc2和.net framework 4您的格式字符串使用的是
HH
-它应该是HH
请参阅MSDN上的
此外,您的第一个:
不应转义-它是占位符0
的一部分,而不是文字
一起:
string.Format(@"{0:hh\:mm}", new TimeSpan(0))
两个问题。首先,您不应该转义第一个
:
。这是分隔符所必需的,不应转义
第二个是HH
应该是HH
运行时不会出现错误:
string.Format(@"{0:hh\:mm}", new TimeSpan(0))
Use应使用hh而不是hh。检查此处的规格: 您应该使用hh而不是hh,例如:
var str=string.Format(@“{0:hh \:mm}”,新的时间跨度(2,2,0))代码>为什么要转义冒号?@RoyDictus:冒号不是特殊格式的字符,因此需要转义。第一个冒号不应该漏掉。非常感谢,这才是真正的问题。另外,我有一个datetime格式为“{0:dd/MM/yyyy HH:MM}”,这也需要“处理”吗?阅读oded linked()页面应该会告诉您需要知道的一切。在这种情况下,格式字符串是有效的,因为:
实际上是一个特殊的格式字符,只表示冒号。为什么会存在这种差异,我不能告诉你@Chris-我链接到TimeSpan
格式字符串,它将不同于DateTime
格式字符串。。。(例如,HH
对DateTime
有效)。哦,对了。这是一个次要的思考(像打字错误,但在思考,而不是打字)。是用于日期时间自定义格式的。最相关的是“任何其他字符”部分的差异。DateTime表示复制时未更改,TimeSpan表示将其视为自定义格式说明符。因此需要为后者而不是前者逃避。