2009-10-23 3 views
1
private bool ValidDateCheck(){ 

bool _isValid = true; 
try{ 
    DateTime.Parse("07/&*/2009"); 
    DateTime d = Convert.ToDateTime("07/&*/2009"); 
} 
catch{ 
    _isValid = false; 
} 
return _isValid; 
} 

위의 코드는 어떻게 예외를 발생시키지 않습니까?이 날짜 구문 분석이 C# .net 1.1에서 작동하지 않는 이유는 무엇입니까?

+0

.NET 3.5에서 나에게 예외가 발생했습니다. – ahawker

+0

처음에 RT로 선언하고 싶습니다. 컴파일 타임 오류가 발생했습니다. – anishMarokey

+0

.net 1.1, try catch 블록 내 – TampaRich

답변

5

이것은 .NET 1.1 documentation에서입니다 :

문자열 S는 현재 문화 초기화 DateTimeFormatInfo의 서식 정보를 사용하여 구문 분석됩니다.

이 메서드는 을 완전히 구문 분석하고 FormatException을 발생시키지 않으려 고합니다. 가능한 경우 인식 할 수없는 데이터를 무시하고 이 누락 된 월, 일 및 연도를 현재 시간의 정보로 채 웁니다. 에 날짜 만 있고 시간이없는 경우 이 메서드는 12 A.M.을 가정합니다. 모든 s의 공백 문자 앞쪽, 안쪽 또는 후행 흰색이 무시됩니다.

매개 변수는 DateTimeFormatInfo 항목에 설명 된 형식 중 하나 인 에 날짜와 시간을 나타내는 을 포함해야합니다.

VS2008에서 빌드 할 수있는 가장 오래된 버전이므로 2.0을 테스트 할 수 없습니다.

1

런타임에 예외가 발생하고이 코드가 실행되지 않으므로 코드가 예외를 throw하지 않습니다. 문자열 리터럴의 작은 따옴표로 컴파일 할 방법이 없으므로 절대로 실행되지 않습니다. 문자열에 큰 따옴표를 사용해야합니다.

작은 따옴표가 오타 일 경우 질문을 수정하면 다시 한 번 보겠습니다.

+0

세미콜론도 없습니다. :) 미안 –

+0

, 그것은 큰 따옴표로, 그것은 ValidDateCheck 부울 개인 myside – TampaRich

+0

에 잘못 인쇄했다() { \t \t \t 부울 _isValid = TRUE; \t \t \t \t \t \t 시도 { \t \t \t \t DateTime.Parse ("10/& */2009"); \t \t \t \t DateTime d = Convert.ToDateTime ("10/& */2009"); \t \t \t \t \t} \t 캐치 { \t \t \t \t _isValid = 거짓; \t \t \t} \t \t \t return _isValid; \t \t} – TampaRich

0
+0

그의 코드는 예외를 던지지 않고 있습니다. TryParse가 그를 도와주지 않을 것입니다. –

+0

TryParse()가 1.1 프레임 워크에 없습니다. – TampaRich

+0

Tryparse는 1.1 프레임 워크에서 사용할 수 없습니다. – Erich

관련 문제