2012-10-15 3 views
2

내가 가지고있는 내 C# MVC2 프로젝트의 코드 라인을 다음TimeSpan 문자열 서식이 예외로 처리되는 이유는 무엇입니까?

string.Format(@"{0\:HH\:mm}", new TimeSpan(0)) 

이 줄은 다음과 같은 예외가 발생한다 :

System.FormatException: Input string was not in a correct format. 

아무도 말해 왜 수 있습니까? 나는 C#, asp.net, mvc2 및 .net 프레임 워크 4를 사용하고 있습니다.

+0

왜 당신은 콜론을 탈출합니까? –

+2

@RoyDictus : 콜론은 특수한 형식의 문자가 아니므로 이스케이프해야합니다. 첫 번째 콜론은 이스케이프해서는 안됩니다. – Chris

답변

9

두 문제. 첫째로 당신은 첫번째 :를 도주해서는 안됩니다. 분리 자로 필요하므로 이스케이프해서는 안됩니다.

두 번째는 HHhh이어야한다는 것입니다.

이 오류없이 실행 :

string.Format(@"{0:hh\:mm}", new TimeSpan(0)) 
+0

정말 고마워요. 정말 문제였습니다. 또한 datetime 형식이 "{0 : dd/MM/yyyy HH : mm}"인데 '치료'도 필요합니까? –

+0

링크 된 페이지 oded (http://msdn.microsoft.com/en-us/library/ee372287.aspx)를 읽으면 알아야 할 모든 정보를 제공합니다. 이 경우':'는 사실 콜론을 의미하는 특별한 형식의 문자이기 때문에 형식 문자열이 유효합니다. 이 차이가 왜 존재하는지 나는 너에게 말할 수 없었다. :) – Chris

+0

@Chris -'TimeSpan' 형식 문자열과 연결됩니다.이 형식 문자열은'DateTime' 형식 문자열과 다릅니다 (하나는'HH'는'DateTime'에 유효합니다). – Oded

3

형식 문자열은 HH입니다. hh이어야합니다.

MSDN의 Custom TimeSpan Format Strings을 참조하십시오.

또한 첫 번째 :은 이스케이프 처리해서는 안되며 리터럴이 아닌 자리 표시 자 0의 일부입니다. 함께

:

string.Format(@"{0:hh\:mm}", new TimeSpan(0)) 
0

사용은 HH 대신 HH를 사용해야합니다.

관련 문제