2012-10-03 2 views
0

나는 다음과 같은 문자열이 있습니다이 저조한 C#에서 날짜 시간 형식으로 문자열을 결성 변환

Updated: 15:14 03/10 

내가 SQL 서버 내에서 날짜 필드에 삽입하기 위해 날짜 형식으로 변환하고자합니다.

string date = 'Updated: 15:14 03/10'; 
    string updatedTime = date.Split(' ')[0]; 
    string updatedDate = date.Split(' ')[1]; 
    string updatedMonth = updatedDate.Split('/')[1]; 
    string updatedDay = updatedDate.Split('/')[0]; 
    string updatedYear = DateTime.UtcNow.Year.ToString(); 
    string updated = updatedYear + '-' + updatedMonth + '-' + updatedDay + ' ' + updatedTime; 
DateTime dt = Convert.ToDateTime(updated); 

더 깨끗하고 효율적인 방법이 있나요?

답변

5

DateTime.ParseExact을 올바른 format string과 함께 사용할 수 있습니다. 이런 식으로 뭔가 :

string date = "Updated: 15:14 03/10"; 
string modifiedDate = date.Replace("Updated: ", ""); 
string format = "HH:mm dd/MM"; 
DateTime parsedDate = DateTime.ParseExact(modifiedDate, format, CultureInfo.CurrentCulture); 

편집 사실, 당신은 형식 문자열에 연도를 필요로하지 않는다; DateTime 파서는 현재 연도를 가정 할만큼 똑똑합니다.

편집 # 2 당신이 건방지게하고 싶다면 "업데이트 된"부분을 형식 문자열에 포함시킬 수 있습니다. 문자가 d, t: 인 이스케이프 처리가 필요하기 때문에 약간 추한 것입니다.

string date = "Updated: 15:14 03/10"; 
string format = @"Up\da\te\d\: HH:mm dd/MM"; 
DateTime parsedDate = DateTime.ParseExact(date, format, CultureInfo.CurrentCulture); 
+0

+1 : 나를 때려 눕히세요. – zimdanen

+0

감사합니다. dbaseman & jon. 매우 감사. – Gravy

3

그것은 항상 형성입니까? 그렇다면, 당신이 할 수있을 것 같습니다

string trimmed = text.Substring("Updated: ".Length); 
DateTime dateTime = DateTime.ParseExact(trimmed, "HH:mm dd/MM", 
             CultureInfo.InvariantCulture); 

그것은이 너무 작동 할 가능성이 있습니다,하지만 난 그것을 시도하지 않은 :

DateTime dateTime = DateTime.ParseExact(text, "'Updated: 'HH:mm dd/MM", 
             CultureInfo.InvariantCulture); 

그것은 당신이있어인지 분명하지 않다 결과적으로 로컬 또는 UTC가 될 것으로 예상합니다. DateTimeStyles을 통해 다양한 옵션을 지정할 수 있습니다.

+0

감사합니다. dbaseman & jon. 매우 감사. – Gravy

관련 문제