TimeSpan ToString 형식
궁금한 점이 있습니다. "5h 3m 30s"와 같은 출력에 사용할 수있는 형식 문자열이 있습니까?
예. (분명히 틀렸다)
myTimeSpan.ToString("hh mm ss")
시험:
myTimeSpan.ToString("h'h 'm'm 's's'")
(공백도 따옴표로 묶어야합니다. 이것이 제 첫 시도에서 잘못된 점입니다.)
물론 .NET 4를 사용하고 있다고 가정합니다. 그 전에는 TimeSpan
사용자 지정 형식 문자열을 지원하지 않았습니다.
편집 : 언급했듯이 24 시간 이상은 작동하지 않습니다. 또한 Noda Time을 통해 대안을 사용할 수도 있습니다. :)
Jon Skeet의 답변을 다음과 같은 코드로 사용할 때 이것을 유의하십시오.
// 12 days, 23 hours, 24 minutes, 2 seconds.
TimeSpan span = new TimeSpan(12, 23, 24, 2);
// 27 hours, 24 minutes, 2 seconds
TimeSpan span2 = new TimeSpan(27,24,2);
string format = span.ToString("h'h 'm'm 's's'");
string format2 = span2.ToString("h'h 'm'm 's's'");
Console.WriteLine(format);
Console.WriteLine(format2);
Console.ReadLine();
다음과 같은 결과를 얻습니다.
23h 24m 2s
3h 24m 2s
시간 형식은 최대 23 시간을 표시 할 수 있습니다. 27 시간을 표시하거나 12 일을 시간으로 변환하지 않고 존재하지 않은 것처럼 단순히 잘라냅니다.
이 문제를 해결하는 한 가지 방법은 TimeSpan의 길이를 확인하고 기간이 1 년, 일 등인지 여부에 따라 서식을 만드는 확장 프로그램을 만드는 것입니다. 또는 날짜가 끊기지 않기 때문에 항상 날짜를 표시 할 수도 있습니다.
string newFormat = span.ToString("d'd 'h'h 'm'm 's's'");
나는 프로그래밍 초보자입니다. 이것은 내가 모든 시간을 보여줄 것이라고 가정 한 후에 이것을 알아 차릴만큼 운이 좋았을 때의 관찰에서 나온 것입니다. 끝없는 시간을 표시 할 수있는 다른 시간 형식과 같은 더 나은 솔루션이 있는지 모르겠 기 때문에 이것을 말하는 것입니다.
그러나이 형식이 의도 한 기능을 수행하고 있다고 생각합니다. 당신은 그것을 알고 있어야합니다. 따라서이 게시물. Jon Skeet의 대답은이 형식이 시간이 최대 23 일 수있는 날짜 유형 형식의 시간 속성 만 표시한다는 것을 결코 나타내지 않았습니다.
.NET4를 사용하지 않을만큼 불행한 경우 :
string.Format("{0}h{1}m{2}s",
myTimeSpan.Hours,
myTimeSpan.Minutes,
myTimeSpan.Seconds);
어떨까요?
String oTime = myTimeSpan.ToString("h") + "h " +
myTimeSpan.ToString("m") + "m " +
myTimeSpan.ToString("s") + "s "
업데이트 1 :
작은 따옴표로 이스케이프 할 수 있습니다. h'h 'm'm 's's'
이 작은 코드는 구문 분석 및 역방향으로 도움이됩니다.
var t = TimeSpan.FromMilliseconds(450780);
double d1 = t.TotalSeconds;
string t3 = t.ToString(@"hh\:mm\:ss\.f",null);
var tt = TimeSpan.ParseExact(t3, @"hh\:mm\:ss\.f",null);
double d2 = tt.TotalSeconds;
사용 Xamarin
하고 .NET Portable 4.5
이것은 여기에서 다른 모든 답변을 시도한 후 작업 한 유일한 형식이었습니다.
timespan.ToString("hh':'mm':'ss");
본질적으로 나는 :
그들을 이스케이프하기 위해 작은 따옴표를 넣습니다.
가끔 정규식과 비슷한 형식 문자열을 찾습니다. 나중에 코드로 돌아 오면 뉘앙스를 잊어 버렸습니다. 따라서 다음과 같이 문서를 다시 보낼 가능성이 적습니다.
string FormatTimeSpan(TimeSpan timeSpan) =>
$"{Math.Floor(timeSpan.TotalHours)}h {timeSpan.Minutes}m {timeSpan.Seconds}s";
C # 6에 도입 된 문자열 보간은 다른 방법보다 훨씬 더 명확하게 만듭니다.
참고 URL : https://stackoverflow.com/questions/11077711/timespan-tostring-format
'Programing' 카테고리의 다른 글
PDO 연결을 올바르게 설정하는 방법 (0) | 2020.09.04 |
---|---|
goto 누출 변수를 사용합니까? (0) | 2020.09.03 |
IOS에서 첫 번째 앱을 제출할 때 Xcode에서 번들 식별자 변경 (0) | 2020.09.03 |
Python matplotlib에서 x 축과 y 축의 스케일을 균일화하는 방법은 무엇입니까? (0) | 2020.09.03 |
asp.net 코어에서 현재 사용자를 얻는 방법 (0) | 2020.09.03 |