2011-01-15 4 views
0

HH가있는 데이터베이스의 HH : mm : ss가 100 이상입니다. 약 3 행에 대한 데이터가 있습니다.날짜/시간대에 관한 다음 코드는 실제로 어떻게 작동합니까?

총 쇼를 HH : mm : ss로 계산하고 싶습니다.

그래서 나는 그 HH : mm : ss를 초로 나눈 다음 총 초를 얻습니다. 그리고 저는 이같이 일합니다.

TimeSpan t = TimeSpan.FromSeconds(TTTot); 
string answer=""; 
answer = string.Format("{0:D2}:{1:D2}:{2:D2}", t.Hours, t.Minutes, t.Seconds); 
answer = string.Format("{0:D2}-{1:D2}:{2:D2}:{3:D2}", t.Days, t.Hours, t.Minutes, t.Seconds);  
answer = string.Format("{0:D5}:{1:D2}:{2:D2}",t.TotalHours, t.Minutes, t.Seconds); 

첫 번째 줄은 내 원본 코드입니다. 나는 약 15 시간 만 보았고 총 가치는 약 130이었다.

그래서 나는 둘째 줄의 답변과 함께 하루로 업그레이드했습니다. 그거야.

그러나 총 시간을 표시하고 싶습니다. 그래서 세 번째 줄에 코드를 수정하여 예외를 얻습니다.

Invalid format exception 

내가 원하는 결과를 얻으려면 어떻게 비틀어 지는지 궁금합니다. HH : mm : ss와 HH는 백 값이 될 수 있습니다.

답변

3

MSDN Library page은 매우 적합합니다.

은 "D"가 (또는 10 진수) 형식 지정자 가 마이너스 기호 접두어 진수 (0-9)의 숫자를 문자열로 변환 : 그것은 D 또는 d 형식 지정자에 대해이 말한다 숫자가 음수이면. 이 형식은 정수 유형에 대해서만 지원됩니다. 문제가

는 TimeSpan.Hours는 TimeSpan.Minutes처럼 수행하는 더블 값이 아닌 정수 값을 반환합니다. (반올림하지 않음)을 다음과 같이 잘림으로써이 문제를 해결할 수 있습니다.

answer = string.Format("{0:D5}:{1:D2}:{2:D2}", 
    (int)t.TotalHours, t.Minutes, t.Seconds); 
관련 문제