C# 밀리초 단위를 받아서 시/ 분/초 단위로 표시
자막에 나오는 시간 단위를 받아서 보기 좋게 정렬하는 코드이다.
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) 는 초단위로 환산하는 나머지를 구하면 된다.