[C#] .NET에서 TimeSpan 객체를 사용자 정의 형식으로 String.Format하려면 어떻게해야합니까?

TimeSpan사용자 정의 형식을 사용하여 객체를 문자열로 형식화하는 권장 방법은 무엇입니까 ?



답변

참고 :이 답변은 .Net 4.0 이상입니다. .Net 3.5 이하에서 TimeSpan을 포맷하려면 JohannesH의 답변을 참조하십시오 .

사용자 지정 TimeSpan 형식 문자열은 .Net 4.0에서 도입되었습니다. MSDN Custom TimeSpan Format Strings 페이지 에서 사용 가능한 형식 지정자에 대한 전체 참조를 찾을 수 있습니다 .

다음은 타임스 팬 형식 문자열의 예입니다.

string.Format("{0:hh\\:mm\\:ss}", myTimeSpan); //example output 15:36:15

( UPDATE ) 다음은 C # 6 문자열 보간을 사용하는 예입니다.

$"{myTimeSpan:hh\\:mm\\:ss}"; //example output 15:36:15

“:”문자를 “\”로 이스케이프해야합니다 (자체 문자열을 사용하지 않는 한 이스케이프해야합니다).

MSDN Custom TimeSpan Format Strings 페이지 에서 발췌 한 “:”및 “. 형식 문자열의 문자 :

사용자 정의 TimeSpan 형식 지정자에는 일을 시간, 시간, 분 또는 초를 소수 초로 분리하는 기호와 같은 자리 표시 자 구분 기호가 포함되지 않습니다. 대신 이러한 기호는 사용자 정의 형식 문자열에 문자열 리터럴로 포함되어야합니다. 예를 들어 “dd.hh : mm”은 일과 시간 사이의 구분 기호로 마침표 (.)를 정의하고 시간과 분 사이의 구분 기호로 콜론 (:)을 정의합니다.


답변

.NET 3.5 이하의 경우 다음을 사용할 수 있습니다.

string.Format ("{0:00}:{1:00}:{2:00}",
               (int)myTimeSpan.TotalHours,
                    myTimeSpan.Minutes,
                    myTimeSpan.Seconds);

바이트에 대한 Jon Skeet 답변 에서 가져온 코드

.NET 4.0 이상의 경우 DoctaJonez answer를 참조하십시오 .


답변

한 가지 방법은 DateTime객체 를 만들어서 서식을 지정하는 것입니다.

new DateTime(myTimeSpan.Ticks).ToString(myCustomFormat)

// or using String.Format:
String.Format("{0:HHmmss}", new DateTime(myTimeSpan.Ticks))

이것이 내가 아는 방법입니다. 누군가가 더 나은 방법을 제안 할 수 있기를 바랍니다.


답변

단순한. TimeSpan.ToStringc, g 또는 G와 함께 사용 하십시오. MSDN의 추가 정보


답변

나는 갈 것이다

myTimeSpan.ToString("hh\\:mm\\:ss");


답변

Dim duration As New TimeSpan(1, 12, 23, 62)

DEBUG.WriteLine("Time of Travel: " + duration.ToString("dd\.hh\:mm\:ss"))

프레임 워크 4에서 작동합니다.

http://msdn.microsoft.com/en-us/library/ee372287.aspx


답변

개인적으로, 나는이 접근법을 좋아한다 :

TimeSpan ts = ...;
string.Format("{0:%d}d {0:%h}h {0:%m}m {0:%s}s", ts);

아무 문제없이 원하는대로 사용자 정의 할 수 있습니다.

string.Format("{0:%d}days {0:%h}hours {0:%m}min {0:%s}sec", ts);
string.Format("{0:%d}d {0:%h}h {0:%m}' {0:%s}''", ts);