2013-05-23 5 views
0

mmddyyyy 형식 또는 yyyymmdd 형식의 날짜가있을 수 있습니다. 이제받은 날짜를 yyyy-mm-dd 형식으로 변환해야합니다. 이전에 나는 내가날짜 형식을 ddmmyyyy에서 yyyyddmm으로 변경하십시오.

Value = DateTime.ParseExact(dob, "yyyy-MM-dd",null) 

을 사용하고 있었다 그리고 필요한 결과를 얻기에만 형태 yyyymmdd 날짜를 얻고 있었다.

이제 들어오는 날짜 형식도 확인해야합니다. 그 일을하는 간단한 방법이 있습니까? 아니면 if else를 넣고 수동으로 모든 것을 검사해야합니까?

+0

'dob'의 가치는 무엇입니까? [MSDN] (http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx)에서 '문자열 표현 형식이 지정된 형식과 정확히 일치해야합니다.' –

+0

들어오는 날짜 문자열에 날짜 구성 요소 사이에 구분 기호가없고 * 들어오는 날짜의 형식을 알지 못합니까? –

+0

도움이 될 것입니다 http://stackoverflow.com/a/11686460/570150 – V4Vendetta

답변

2

첫 번째 형식으로 날짜를 구문 분석 할 수 있습니다. 구문 분석이하는 성공하지 못한 경우에 당신은 다른 형식의 구문 분석 :

당신이 이런 식으로 수행해야합니다

//example date 
string dateString= "09301986"; 

//output date 
DateTime finalDate;   

if (!DateTime.TryParseExact(dateString, "ddMMyyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out finalDate)) 
{ 
    DateTime.TryParseExact(dateString, "yyyyMMdd", CultureInfo.InvariantCulture, 
    DateTimeStyles.None, out finalDate); 

} 

string finaldate = finalDate.ToString("yyyy-MM-dd"); 
+0

나는 형식 문자열에서'MM' ('mm'은 분임)을 의미한다고 생각하고 그 질문에서 순서는'MMddyyyy'입니다. –

+0

참. 변경됨! 감사합니다 –

+0

고맙고 좋은 내 대답을 해결하는 데 도움이 답변을 너무 많이. 1 + – barsan

7

당신은 당신이 가능한 형식의 컬렉션을 통과 할 수 있도록 TryParseExact 방법을 사용할 수를 당신 지원하고 싶다.

DateTime dateValue; 
var formats = new[] { "MM-dd-yyyy", "yyyy-MM-dd" }; 
if (DateTime.TryParseExact(dob, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue)) 
{ 
    // do for valid date 
} 
else 
{ 
    // do for invalid date 
} 
+1

+1 내 솔루션보다 훨씬 더 우아한 배열 버전에 대해 몰랐습니다 :) –

관련 문제