자막에 나오는 시간 단위를 받아서 보기 좋게 정렬하는 코드이다.
public double TimeCodeValue(string timecode)
{
// 00:01:53,039
string[] parts = timecode.Replace(",", ":").Split(':', ',');
double Hours = int.Parse(parts[0]);
double Minutes = int.Parse(parts[1]);
double Seconds = int.Parse(parts[2]);
double Milliseconds = int.Parse(parts[3]);
return (Hours * 3600 + Minutes * 60 + Seconds) * 1000 + Milliseconds;
}
public string TimeCodeFormat(double timecodevalue)
{
// 91469 를 시분초밀리초 단위로 표시
double temptime = System.Math.Truncate(timecodevalue / 1000); // 몫
double hour = System.Math.Truncate(temptime / 3600);
double minute = System.Math.Truncate(temptime % 3600 / 60);
double seconds = temptime % 3600 % 60;
double milliseconds = timecodevalue % 1000; // 나머지
return string.Format("{0:0}:{1:00}:{2:00},{3:000}", hour, minute, seconds, milliseconds);
}
설명
1. 밀리세컨즈(milliseconds) 단위를 초 단위로 추출하고
2. 시간 단위로 환산하기 위해서 3600(60분 X 60초)로 나눈 몫을 구한다.
Math.Truncate 함수를 사용하여 반올림하지 않고 정수만 잘라낸다.
3. 분 단위로 환산하기 위해서
시간단위로 나눈 나머지를 가지고 다수 몫을 구한다.
4. 초 를 구하기 위해서는
시간단위, 분단위를 구한 나머지를 구한다.
5. 밀리세컨즈(milliseconds) 는 초단위로 환산하는 나머지를 구하면 된다.
'C# > 문법 및 기능' 카테고리의 다른 글
C# URL 경로 링크 (0) | 2015.11.10 |
---|---|
C# Timer.Tick 이벤트, 이벤트 분석 (0) | 2015.10.22 |
C# 몫과 나머지 구하기 (0) | 2015.10.17 |
C# 문자열 다루기 StringBuilder (2) | 2015.10.10 |
C# 문자열 분리 Split (0) | 2015.10.09 |