Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 초를 시간(시:분:초:밀리초) 형식으로 변환하는 가장 좋은 방법

C#에서 초 단위의 값을 사람이 읽기 쉬운 시간 형식(시:분:초:밀리초)으로 변환하려면 TimeSpan 구조체를 활용하는 것이 가장 깔끔하고 효율적인 방법입니다. 먼저 관련 핵심 타입인 DateTime과 TimeSpan에 대해 살펴보겠습니다.

DateTime이란?

DateTime은 int나 double처럼 값 형식(Value Type)에 해당하는 구조체입니다. System 네임스페이스에 속해 있으며 mscorlib.dll 어셈블리에 포함되어 있습니다. 또한 IComparable, IFormattable, IConvertible, ISerializable, IEquatable 등의 인터페이스를 구현하고 있어 다양한 비교 연산과 형식 변환을 지원합니다.

DateTime 객체에는 Day(일), Month(월), Year(년), Hour(시), Minute(분), Second(초), DayOfWeek(요일) 등 날짜와 시간 정보를 다루는 다양한 속성이 포함되어 있습니다.

TimeSpan이란?

TimeSpan 구조체는 두 시점 사이의 시간 간격을 나타내며, 일(day), 시(hour), 분(minute), 초(second) 단위로 측정된 차이를 표현합니다. 주로 두 개의 DateTime 객체를 비교하여 두 날짜 사이의 차이를 계산할 때 사용됩니다.

또한 TimeSpan 클래스는 FromDays, FromHours, FromMinutes, FromSeconds, FromMilliseconds 메서드를 제공하므로, 일·시·분·초·밀리초 값으로부터 손쉽게 TimeSpan 객체를 생성할 수 있습니다. 이 중 FromSeconds 메서드를 사용하면 초 값을 바로 TimeSpan으로 변환할 수 있습니다.

예제 1: 3752초 변환하기

아래 예제는 TimeSpan.FromSeconds 메서드로 3752초를 TimeSpan 객체로 만든 뒤, string.Format과 D2/D3 포맷 지정자를 사용해 원하는 형식의 문자열로 출력합니다.

static void Main(string[] args){
    TimeSpan t = TimeSpan.FromSeconds(3752);
    string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
    t.Hours,
    t.Minutes,
    t.Seconds,
    t.Milliseconds);
    System.Console.WriteLine(answer);
    Console.ReadLine();
}

출력 결과

01h:02m:32s:000ms

예제 2: 6초 변환하기

다음 예제는 6초를 동일한 방식으로 변환합니다. 값이 한 자리 수인 경우에도 D2 포맷 지정자가 앞자리를 0으로 채워 항상 두 자리로 표시해 주므로, 출력 형식이 일관되게 유지됩니다.

static void Main(string[] args){
    TimeSpan t = TimeSpan.FromSeconds(6);
    string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
    t.Hours,
    t.Minutes,
    t.Seconds,
    t.Milliseconds);
    System.Console.WriteLine(answer);
    Console.ReadLine();
}

출력 결과

00h:00m:06s:000ms

정리

초를 시:분:초:밀리초 형식으로 변환할 때는 TimeSpan.FromSeconds로 초 값을 TimeSpan 객체로 변환한 후, Hours·Minutes·Seconds·Milliseconds 속성과 string.Format의 숫자 포맷 지정자(D2, D3)를 조합하는 것이 가장 좋은 방법입니다. 이 방식은 코드가 간결할 뿐만 아니라 자릿수 맞춤 처리도 자동으로 되어 가독성 높은 결과를 얻을 수 있습니다.