2010-06-11 12 views
7

간단한 숫자 (군대 시간 포함)를 시간 형식 (오전, 오후 형식)으로 변환하는 매끄러운 방법이 있습니까? 나는 지루한 접근 할 수 있지만이 있다면 난 그냥 다른 방법숫자를 시간으로 변환 하시겠습니까?

0800에게 궁금이 오른쪽에서 당신 포인트 => 오전 8시

2317 => 오후 11시 17분

+0

'지루한 접근'이란 무엇을 의미합니까? 사용자 지정 형식 공급자가있는 DateTime.ParseExact()? – Odrade

+1

var time = DateTime.ParseExact ("0800", "HHmm", CultureInfo.InvariantCulture); –

답변

12
DateTime dt = DateTime.ParseExact("0800", "HHmm", CultureInfo.InvariantCulture); 
    string timestring = dt.ToString("h:mm tt"); 

형식 코드는 documentation을 참조하십시오.

1

희망 방향 :

string time = "0800"; 
    DateTime dt = DateTime.ParseExact(string.Format("{0}:{1}", time.Substring(0, 2), time.Substring(2, 2)), "HH:mm", CultureInfo.InvariantCulture); 
    MessageBox.Show(string.Format("{0:h:mm tt}", dt)); 

    time = "2345"; 
    dt = DateTime.ParseExact(string.Format("{0}:{1}", time.Substring(0, 2), time.Substring(2, 2)), "HH:mm", CultureInfo.InvariantCulture); 
    MessageBox.Show(string.Format("{0:h:mm tt}", dt)); 
+0

문자열을 HH : mm 형식으로 다시 포맷하고 사용자가 직접 HHmm 형식으로 다시 포맷하지 않는 이유는 무엇입니까? –

+0

좋은 질문입니다. 나는 그것을 빨리 썼기 때문에 그것에 대해 생각하지 않았습니다. :) – Robaticus

+0

@Robaticus 입력 시간이 "23"(00:23)이라면 어떻게해야합니까? 그렇다면 코드가 예외를 throw합니다. –

1

원하는 형식 문자열로 DateTime.TryParse을 사용하십시오.

여러 가지 형식을 허용 할 수있는 경우 일치하는 것을 찾을 때까지 차례로 각각의 형식을 호출해야합니다. 이는 "지루한 접근법"의 의미라고 생각합니다.

관련 문제