2013-06-29 3 views
2

문자열이 유효한 날짜인지 여부를 확인하기 위해 나는 다음과 같은 방법이 유효한 날짜로 인식되지 않았습니다C#을 문자열은

"12/31/2013 12:00:00 AM"이런 일이 왜 이해할 수 없다

:이 같은 문자열을 전달하려고 할 때마다 붙 잡았다. 누군가 제가이 문제를 해결하도록 도와 줄 수 있습니까?

+2

['DateTime.TryParse'] (http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx)의 문제점은 무엇입니까? –

답변

3

대부분의 경우 현재 culture 설정이 날짜에서 제공되는 형식과 다른 명시 적 문화를 지정하려고 할 수 있습니다.

대신 try/catch 블록의
CultureInfo culture = new CultureInfo("en-US"); // or whatever culture you want 
Convert.ToDateTime(date, culture); 
+0

감사합니다 Andrei :) 어느 것이 원하는 결과를 얻는 지 조금만 실험하고 있습니다. 감사합니다 :) – Matthew

+0

감사 Andrei :) 나는 다음과 같이 날짜를 포맷 : DateTime 날짜 = (DateTime) DatePicker_ExpiryDate.Value; 문자열 expiry_date = date.ToString ("yyyy-MM-dd HH : mm : ss"); 이제 완벽하게 작동합니다. – Matthew

+1

@Matthew, 날짜의 정확한 형식을 지정하는 것이 가능한 다른 방법입니다. 그러나 여전히 문화 설정을 확인하는 것이 좋습니다. 처음에는 코드가 작동하지 않는 것이 이상합니다. – Andrei

4

의에서 TryParse 방법 내장 시도 DateTime 클래스 문자열을 매개 변수로 사용하고 성공적으로 변환하면 "result"변수에 값을 배치합니다. 부울 값이 작동하는지 여부를 나타내는 부울 값을 반환합니다.

public bool isDate(string date) 
{ 
    var result = new DateTime(); 

    return DateTime.TryParse(date, out result); 
} 
+1

이것을 Andrei의 대답 – khlr

+0

과 결합 해 주셔서 감사합니다 :) 나는 실험하고 있습니다. – Matthew

+0

다음 convension을 사용하여 날짜 형식을 지정했습니다. DateTime date = (DateTime) DatePicker_ExpiryDate.Value; 문자열 expiry_date = date.ToString ("yyyy-MM-dd HH : mm : ss"); – Matthew

1

또한 날짜가 특정 형식이 있는지 확인하기 위해 (here 더 볼, 예. MM/dd/yy H:mm:ss zzz) DateTime.TryParseExact를 사용하고 형식 문자열을 전달할 수 있습니다.