2009-10-16 2 views

답변

11

자신의 try/catch 블록을 사용하는 대신 DateTime.TryParse 메서드를 사용하십시오. 당신이 날짜의 형식이 될 것입니다 무엇을 알고있는 경우

string text = "10/16/2009"; 
DateTime result; 

if (DateTime.TryParse(text, out result)) 
{ 
    // success, result holds converted value 
} 
else 
{ 
    // failed 
} 
+0

감사를 사용하지 마십시오 것 날짜 구문 분석에 사용할. 관심의 대상에서 차이점은 무엇입니까? – John

+2

@ 존 : 차이점은 TryParse가 부울 값을 반환하여 실패 할 경우 예외를 throw하는 대신 지정된 텍스트를 성공적으로 날짜로 변환 할 수 있었는지 여부를 나타냅니다. Parse를 사용하면 FormatException이 발생하므로 try/catch를 사용해야합니다. –

+0

추가로, Parse 메소드를 제공하는 모든 BCL 타입은 TryParse 메소드도 제공합니다. –

2

, 당신은 또한 사용할 수 있습니다 DateTime..::.TryParseExact Method

이 같은 2009년 1월 3일

같은 날짜와 함께 사용할 때 DateTime.TryParse이 문제가 발생할 수 있습니다

03 월 1 월 3 일입니까?

날짜 선택기와 같은 텍스트 상자 이외의 것을 사용하거나 텍스트 상자의 유효성을 검사하여 dd MMM yyyy와 같은 것을 사용하는 것이 좋습니다. 아주 드물게 당신은 그것에 잘못 될 것입니다.

이전 답변에
1

리틀 또한 :

날짜 시간 :

public static DateTime Parse(string s) 
{ 
    return DateTimeParse.Parse(s, DateTimeFormatInfo.CurrentInfo, DateTimeStyles.None); 
} 

public static bool TryParse(string s, out DateTime result) 
{ 
    return DateTimeParse.TryParse(s, DateTimeFormatInfo.CurrentInfo, DateTimeStyles.None, out result); 
} 

DateTimeParse :

internal static DateTime Parse(string s, DateTimeFormatInfo dtfi, DateTimeStyles styles) 
{ 
    DateTimeResult result = new DateTimeResult(); 
    result.Init(); 
    if (!TryParse(s, dtfi, styles, ref result)) 
    { 
     throw GetDateTimeParseException(ref result); 
    } 
    return result.parsedDate; 
} 

TryParse이 더 나은

참고 :

Reflector

1

는 다음을 시도해보십시오

DateTime todate; 
if(!DateTime.TryParse("2009/31/01", todate)) 
{ 
//------------conversion failed-------------// 
} 
2

가장 좋은 패턴이

string DateFormat = "dd/MM/yyyy"; //Or any other format 
DateTime dateTime; 
bool success = DateTime.TryParseExact(value, DateFormat, 
     CultureInfo.InvariantCulture, 
      DateTimeStyles.None, 
       out dateTime); 

DateTime.Parse 심지어 DateTime.TryParse

관련 문제