Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么TimeSpan字符串格式会解析为异常?_C#_Asp.net Mvc 2_.net 4.0_String Formatting_Timespan - Fatal编程技术网

C# 为什么TimeSpan字符串格式会解析为异常?

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的一部分

在我的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))

两个问题。首先,您不应该转义第一个
。这是分隔符所必需的,不应转义

第二个是
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表示将其视为自定义格式说明符。因此需要为后者而不是前者逃避。